首页
社区
课程
招聘
[推荐]UASM (HJWasm) - UASM is a free MASM-compatible assembler based on JWasm
发表于: 2016-11-24 05:54 6604

[推荐]UASM (HJWasm) - UASM is a free MASM-compatible assembler based on JWasm

2016-11-24 05:54
6604

UASM (HJWasm) - UASM is a free MASM-compatible assembler based on JWasm with these features:


[*]native support for output formats Intel OMF, MS Coff (32/64-bit), Elf (32/64-bit), Binary, Windows PE (32/64-bit) and DOS MZ.
[*]precompiled HJWasm binaries are available for Windows.
[*]Instructions up to AVX2 and AVX512F are supported.
[*]Support for MS Vectorcall on x64.
[*]HJWasm is written in C. The source is portable and has successfully been tested with Open Watcom, MS VC, GCC and more.
[*]As far as programming for MS Windows is concerned, HJWasm can be used with both WinInc (32/64-bit) and Masm32 (32-bit).
[*]C header files can be converted to include files for HJWasm with h2incX.
[*]HJWasm's source code is released under the Sybase Open Watcom Public License, which allows free commercial and non-commercial use.
[*]There's a bunch of source samples available - they are supplied with the precompiled binary packages.
[*]JWasm started as a fork of Open Watcom's Wasm in March 2008. Today, the part of Wasm source lines still contained in JWasm is approximately 15%.
[*]HJWasm is a continued evolution of JWasm.

UASM 2.46 (32bit) 08/12/2017 uasm246_x86.zip32bit Binary Package (Windows)
UASM 2.46 (64bit) 08/12/2017 uasm246_x64.zip64bit Binary Package (Windows)
UASM 2.46 (Linux 64bit)08/12/2017uasm246_linux64.zip64bit Linux Executable (GCC)
UASM 2.46 (OSX Universal)08/12/2017uasm246_osx.zip64bit OSX Executable (GCC)


Full SDK 10.0 translate for 64 and 32 bits https://share.orange.fr/#Tv3uNphuWJ1c0f515180
http://luce.yves.pagesperso-orange.fr/traduire_les_header.html

NOTES:
Adapting constants switchs to your system,use this tool:
sdkrc81\Before_use_me.exe.He will give you the correct swiths for your system.
Modify translate.inc with this switchs.The defaut system is windows 10.0

With a correct alignment,all translated structures,can be used as they are.
There is no need of any modifie.

Easy Code IDE 32/64-bit

Easy Code - Visual assembler
(Windows 95/98/ME/NT40/2000/XP/2003/2008/Vista/7/8/8.1/10)

- Version 2.x Fasm, GoAsm, JWasm, UASM (HJWasm), Masm and PoAsm, using different tools for the various assemblers



http://www.easycode.cat/English/Download/EasyCode20100004Eng.zip


[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课

上传的附件:
收藏
免费 0
支持
分享
最新回复 (16)
雪    币: 3202
活跃值: (1917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
这到底是什么?反汇编工具还是什么?有截图吗?
2016-11-24 10:26
0
雪    币: 10026
活跃值: (158)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
好东西,,感谢分享~~
2016-11-24 13:47
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
2016-11-24 16:20
0
雪    币: 3202
活跃值: (1917)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
目测大牛应该在国外吧,你给的链接都被墙了。
2016-11-24 17:07
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
6
最新版本

HJWasm 2.17 (32bit)        26/11/2016        hjwasm217_x86.zip        32bit Binary Package (Windows)
HJWasm 2.17 (64bit)        26/11/2016        hjwasm217_x64.zip        64bit Binary Package (Windows)
HJWasm 2.17 (Linux 64bit)        26/11/2016        hjwasm 2.17        64bit Linux Executable (GCC)
2016-11-27 02:48
0
雪    币: 93908
活跃值: (200199)
能力值: (RANK:10 )
在线值:
发帖
回帖
粉丝
7
HJWasm 2.19 03/02/2017
_http://www.terraspace.co.uk/hjwasm219_x86.zip
_http://www.terraspace.co.uk/hjwasm219_x64.zip
_http://s3.amazonaws.com/hjwasm/GccUnixR/hjwasm
2017-2-4 17:46
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
8

http://www.terraspace.co.uk/hjwasm.html
HJWasm  2.27  (32bit)        14/04/2017        hjwasm227_x86.zip        32bit  Binary  Package  (Windows)
HJWasm  2.27  (64bit)        14/04/2017        hjwasm227_x64.zip        64bit  Binary  Package  (Windows)
HJWasm  2.27  (Linux  64bit)        14/04/2017        hjwasm  2.27        64bit  Linux  Executable  (GCC)
HJWasm  2.27  (OSX  Universal)        14/04/2017        hjwasm227_osx.zip        64bit  OSX  Executable  (GCC)
2017-4-17 23:08
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
9


UASM 2.37 (32bit)20/06/2017uasm237_x86.zip32bit Binary Package (Windows)
UASM 2.37 (64bit)20/06/2017uasm237_x64.zip64bit Binary Package (Windows)
UASM 2.36 (Linux 64bit)08/06/2017uasm236_linux64.zip64bit Linux Executable (GCC)
UASM 2.36 (OSX Universal)08/06/2017uasm236_osx.zip64bit OSX Executable (GCC)


2017-6-21 20:01
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
10

UASM 2.39 (32bit)25/08/2017uasm239_x86.zip32bit Binary Package (Windows)
UASM 2.39 (64bit)25/08/2017uasm239_x64.zip64bit Binary Package (Windows)
UASM 2.39 (Linux 64bit)25/08/2017uasm239_linux64.zip64bit Linux Executable (GCC)
UASM 2.39 (OSX Universal)25/08/2017uasm239_osx.zip64bit OSX Executable (GCC)

  1. 2.39 Improved string literal handling and fixed a bug where it wouldn’t work in vararg
  2. parameters.
  3. Added DEFINE/UNDEF built-in commands.
  4. Optimised SWITCH generated code, moved jump tables to data sections to avoid
  5. affecting code sections/code caching and line number to offset references.
  6. 2.38 Fixed more listing issues with binary zeroes.
  7. Improved UTF bom check performance by moving to ProcessFile (Nidud)
  8. Fixed an encoding issue with LEA and RIP.
  9. Fixed IFNDEF macro generation bug.
  10. Fixed SYSCALL, FASTCALL64 and VECTORCALL parameter order and type
  11. checking bugs.
  12. Added new instructions: ADOX, VAESDEC, ADCX, CLAC, RDPID, CLFLUSHOPT
  13. Fixed an index register encoding bug and improved checking for valid forms of
  14. vscatter and vgather.


2017-8-27 22:25
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
11
UASM 2.40 (32bit)20/09/2017uasm240_x86.zip32bit Binary Package (Windows)
UASM 2.40 (64bit)20/09/2017uasm240_x64.zip64bit Binary Package (Windows)
UASM 2.40 (Linux 64bit)20/09/2017uasm240_linux64.zip64bit Linux Executable (GCC)
UASM 2.39 (OSX Universal)30/08/2017uasm239_osx.zip64bit OSX Executable (GCC)

2017-9-21 17:30
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
12
UASM 2.41 (32bit) 03/10/2017 uasm241_x86.zip32bit Binary Package (Windows)
UASM 2.41 (64bit) 03/10/2017 uasm241_x64.zip64bit Binary Package (Windows)
UASM 2.40 (Linux 64bit)20/09/2017uasm240_linux64.zip64bit Linux Executable (GCC)
UASM 2.39 (OSX Universal)30/08/2017uasm239_osx.zip64bit OSX Executable (GCC)

2017-10-4 00:47
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
13
UASM 2.41 (Windows XP)04/10/2017uasm32_xp.zip32bit WinXP Executable (Windows)

2017-10-4 19:03
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
14

UASM 2.45 Release

Packages are updated on the site as well as git.

Changes are:

Fixes:
1) Fixed usage text to show SSE as the default architecture.
2) Fixed 32bit addressing mode issue when using Array[n] (variable indexed by constant).
3) Minor RBP stack-frame fixes.
4) Fix for RSP stack setup using WIN64 < 11.
5) Fix for vmovupd addressing mode. This error was also affecting evex encoding instructions that can't use 1 byte displacement.

Improvements:
1) Updated and cleaned up the unix build.
2) Re-organized the samples folder and descriptions.
3) Adjusted local arrangement with RBP stack-frame to minimize required padding and ensure all locals are always aligned so win64:7 is obsolete.
4) Vsubpd xmm0, xmm0, zmm14 now generates an error.

New Features:
1) Add -macho64 output format support (OSX 64bit objects).
2) Added two new samples osx1.asm, osx2.asm for macho64 output.
3) Added new sample crossplatform/hello.asm demonstrating a simple console app that assembles on win64, linux and osx.

We now are finally able to run, assemble and target all platforms: Windows, Linux and OSX :)

Here is a simple hello world sample that assembles and runs on all 3 without modification:

; ####################################################################
;
; Fully cross platform 64bit Hello World Sample.
; Uses built-in @Platform to target code-blocks with UASM 2.45
;
; Windows (x64): uasm64 -c -win64 -Zp8 hello.asm
;                link /machine:x64 /subsystem:console /release hello.obj msvcrt.lib
;
; Linux (x64):   uasm -c -elf64 hello.asm
;                gcc -o hello hello.o
;
; OSX (x64):     uasm -c -macho64 hello.asm
;                ld hello.o -e main -lc -o hello_app
;
; ####################################################################

include crossplatform.inc

main    proto 
MyFunc  proto 

.code

main PROC 
	invoke MyFunc	
	IF @Platform EQ WINDOWS64
	   invoke ExitProcess,0
	ELSE
	   mov eax,SYS_EXIT
	   syscall
	ENDIF
	ret
main ENDP

MyFunc PROC
	invoke CPRINTF, "Hello world!\n"
	ret
MyFunc ENDP
end


2017-11-12 06:26
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
15
UASM 2.46 Release
What have we got in this release?

Fixed:
-----------------------------
1) Corrected some misplaced samples in the packages.
2) Fix incorrect detection of used proc parameter vs. global struct member.
3) Promote immediate vararg arguments to qword when too large for signed dword.

Improvements:
-----------------------------
1) Add signed 1 byte displacement optimisation to all vex and evex encoded memory operands.
2) I've combined the various manual/documents into a single manual now.
3) Support return types and vectorcall in OO interfaces and updated OO samples.
4) Added return type support to OO interfaces.
5) Add .endf and .endsw aliases for .endfor and .endswitch

And the big new features:
-----------------------------
1) Added C-style function calling.
    The following is now possible: 
	.if ( MyProc6( MyProc8() ) == 7 )
	   xor eax,eax
	.endif

	mov eax,MyProc(10, 20)
	lea rsi,myVar
	mov eax,[rsi + MyProc12()]
	mov myVar,MyProc(11,12)
	mov myVar2,MyProc12()
	vmovaps xmm1,MyProc5(1.0)

	MyProc3()
	MyProc(10,20)
	MyProc(10,ADDR MyProc)
	MyProc2("this is a literal")

	.if( MyProc(10,20) == 30 )
	   xor eax,eax
	.endif

	.if( MyProc5(1.0) == FP4(2.0) )
	   xor eax,eax
	.endif

	.if ( MyProc6(7) == 7 )
	   xor eax,eax
	.endif

	MyProc(MyProc3(), 20)	
	MyProc(10, MyProc4())	
	MyProc(MyProc3(), MyProc4())
	MyProc(MyProc3(), MyProc2("stringy"))

	MyProc10(MyProc11(), MyProc2("stringy"))

	MyProc7( 10, 20, myVar, myVar2, 2.0, 30 )

	MyProc( MyProc( MyProc3(), 10 ), 20)	

	.if ( MyProc6( MyProc8() ) == 7 )
	   xor eax,eax
	.endif

	MyProc7( 10, 20, myVar, myVar2,	MyProc9( 10, 20, myVar, myVar2, 2.0, 30 ), 30 )

	MyProc7( 10, 
		 20, 
		 myVar, 
		 myVar2, 
		 2.0, 
		 30 )
All the HL/C style calls are implemented under the hood via macros, and only a light shim in the pre-processor is required which means these features do not impact or cause any other issues with existing parser or expression evaluator logic and can rely on the already powerful macro expansion system to deal with the recursions etc. Internally the macros also respect the architecture selection (AVX vs SSE) and the ordinal of the argument, so that return values are correctly loaded into the corresponding register or stack locations.

Procedure calls can be nested 1 level deep, inner calls preserver the registers of the outer call parameters where required, and all support return typing and can be used in other HLL expressions, which can be especially fun when combined with the HLL floating point comparison operators.

2) Support pointer syntax with -> and allow c-style calls via pointer and OO methods.

The above higher level calling features have been further extended with support for a c-style pointer operator ( -> ) which can then be applied to the object oriented framework: 
	; Method invocation using c-style calls.
albl:  person1->Calc(1.0)
	person2->Calc(2.0)
    .if( person1->Calc(1.0) == FP4(2.0) )
        xor eax,eax
    .endif
		
	; Using a register as an object pointer with c-style calls requires the type to specified after the pointer.
	; The register must be doubley-indirect, in that it points to the pointer to the object, which allows for rapid iteration through lists of object pointers.
	lea rsi,person1
	[rsi].Person->Calc(1.0)
    .if( [rsi].Person->Calc(1.0) == FP4(2.0) )
        xor eax,eax
    .endif
	xor rax,rax
	lea rsi,person2
	[rsi+rax].Person->Calc(1.0)
	xor rax,rax
    .if( [rsi+rax].Person->Calc(1.0) == FP4(2.0) )
        xor eax,eax
    .endif

	person1->Calc( person2->Calc(1.0) )		; Pass the typed result of a method call to another method.
	NormalProc( person1->Calc(1.0) )		; Pass the typed result of a method call to a normal procedure.
	person1->Calc( NormalProc(1.0) )		; Pass the typed result of a normal procedure to a method call.
	person2->DoAdd( 1.0, NormalProc(2.0) )	

    ; Delete the objects.
    _DELETE(person1)
    _DELETE(person2)
3) Add COMINTERFACE support built-in to allow direct implementation and use of COM objects without all the boilerplate wrapper nonsense.
Building on the previous two features, direct declaration of COM object interfaces and their invocation is now a doddle:
; Declare a COM interface for IDirect3D9
COMINTERFACE IDirect3D9
	CVIRTUAL RegisterSoftwareDevice, DWORD, :PTR
	CVIRTUAL GetAdapterCount, DWORD
	CVIRTUAL GetAdapterIdentifier, DWORD
	CVIRTUAL GetAdapterModeCount, DWORD
	CVIRTUAL EnumAdapterModes, DWORD
	CVIRTUAL GetAdapterDisplayMode, DWORD
	CVIRTUAL CheckDeviceType, DWORD
	CVIRTUAL CheckDeviceFormat, DWORD
	CVIRTUAL CheckDeviceMultiSampleType, DWORD
	CVIRTUAL CheckDepthStencilMatch, DWORD
	CVIRTUAL CheckDeviceFormatConversion, DWORD
	CVIRTUAL GetDeviceCaps, DWORD, Adapter:DWORD, DeviceType:DWORD, pCaps:PTR
	CVIRTUAL GetAdapterMonitor, DWORD
	CVIRTUAL CreateDevice, DWORD
ENDCOMINTERFACE

LPDIRECT3D9 TYPEDEF PTR IDirect3D9

; Call it :)

	mov direct3d,Direct3DCreate9( D3D_SDK_VERSION )
	.if( rax != 0 )
		direct3d->GetDeviceCaps( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, ADDR caps )
	.endif

4) And possibly the most important, I've finally gotten around to updating and merging all the regression testing sets from nasm, gas, jwasm, uasm and asmc and implementing a fully automated set of testing on each build. All the results from these tests have been fixed in 2.46 so there should be a lot fewer (hopefully no) regressions or encoding issues going forward from here. The tests are included in the regress folder in the github repository and also include the OO features, macrolib, Linux64, SystemV and various other UASM only features. This brought up a few encoding issues in AVX2 and AVX512 which are now fixed.

5) Thanks to AW27's work on SEH we've ensured that both the manual and automated models that he has developed work in UASM. These are included as part of the regression tests.

Planning for 2.47 is underway, first features to be picked up are support for DWARF debugging output, some new Linux and OSX GTK+ samples and merging in the last bunch of regression tests.

P.S. Packages and git have been updated to 2.46.3 dated 8th Dec.
This includes all the required fixes and a new option hlcall:{on|off} to disable the c style function calling and object/pointer invocations. It's enabled by default.

UASM 2.46 (32bit) 08/12/2017 uasm246_x86.zip32bit Binary Package (Windows)
UASM 2.46 (64bit) 08/12/2017 uasm246_x64.zip64bit Binary Package (Windows)
UASM 2.46 (Linux 64bit)08/12/2017uasm246_linux64.zip64bit Linux Executable (GCC)
UASM 2.46 (OSX Universal)08/12/2017uasm246_osx.zip64bit OSX Executable (GCC)

A new version of Easy Code 2 has been released. Plase download it at:

http://www.easycode.cat/English/Download.htm   (English version)
http://www.easycode.cat/Download.htm               (Catalan version)
http://www.easycode.cat/Spanish/Download.htm  (Spanish version)

For more information, please refer to the 'Get the latest version of Easy Code 2 here' topic in this forum.

Enjoy it!
2017-12-8 21:22
0
雪    币: 965
活跃值: (89)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
16
感谢楼主分享
2017-12-9 12:19
0
雪    币: 897
活跃值: (5916)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
17
UASM 2.47 is now available:
UASM 2.47 (32bit) 17/11/2018 uasm247_x86.zip32bit Binary Package (Windows)
UASM 2.47 (64bit) 17/11/2018 uasm247_x64.zip64bit Binary Package (Windows)
UASM 2.47 (Linux 64bit)17/11/2018uasm247_linux64.zip64bit Linux Executable (GCC)
UASM 2.47 (OSX Universal)17/11/2018uasm247_osx.zip64bit OSX Executable (GCC)

A new version of Easy Code 2.02.0.0007 has been released. Please download it at:

http://www.easycode.cat/English/Download.htm   (English version)
http://www.easycode.cat/Download.htm               (Catalan version)
http://www.easycode.cat/Spanish/Download.htm  (Spanish version)


UASM 2.47 is now available:
-------------------------------------
Roadmap:
-------------------------------------

2.48

Add DWARF symbolic debugging support.
Add support for PLT/GOT relative addressing.
Extract vectorcall handling to be compatible with all modes.

-------------------------------------
Changelog:
-------------------------------------

2.47

Fixed symbol undefined with IF
Add -PIE command line switch for position indepedant executable. (not used yet)
Fixed vxorpd evex warning with missing register.
Corrected encoding for vmovsd.
Fix vgather/scatter encoding issue.
Fix vectorcall register over-write ordering.
Fix codegen integer shift encoding for SSE vs. AVX/EVEX.
Add m512 built-in types
Fix error reporting for evex compare instructions (http://masm32.com/board/index.php?topic=7320.0) => VPCMPB,VPCMPUB,VPCMPD,VPCMPUD,VPCMPQ,VPCMPUQ,VPCMPW,VPCMPUW
Clang and Gcc 8+ compiler compatibility fixes
Name mangling for vectorcall
Include improved build files for osx/linux
Fix generation of instructions when in data section (due to lbl: conversion to lbl label byte regression from 2.19)
Add error when literal string used in invoke and parameter is NOT of type PTR or VARARG.
Fixed transfer of language type info from PROC to equate (http://masm32.com/board/index.php?topic=7137.0)
Ensure that an equate used with invoke redirects to the actual PROC symbol to ensure proper relocations are generated (http://masm32.com/board/index.php?topic=7137.0)
Fix static method HLL invocation without parameters.
Fixed console colour background to match active setting under Windows.
remove duplicated string literals
add plt,got relocation types provisionally.
Fix register ordering in memory operands where base and index could be swapped when no scale present. (Legacy jwasm bug)
AVX-512 encoding fix for VPGATHERDD in 32bit.
Added MOVBE instruction support.

2018-11-24 19:39
0
游客
登录 | 注册 方可回帖
返回
//