Submission + - Introducing JWASM - MASM's unofficial successor??? 7
JWASM is a 16/32/64-bit x86 macro assembler that is written in portable C and can build/run on multiple platforms such as Windows, Linux, FreeBSD and DOS. JWASM also supports assembling to popular object formats such as 32/64-bit ELF, 32/64-bit MS COFF, Intel OMF, BIN (flat binary) and even DOS MZ files. The current version at the time of writing this article, JWASM 2.02, can also compile under Mac OS 10.6 using the latest version of XCode, after a bit of error placating with GCC and LD that is.
Since JWASM doesn't currently support Mach-O object output, I went an alternate route and decided to assemble a variation of the "FreeBSD 32 Hello world" example, found on the author's site, to ELF and use Agner Fog's OBJCONV utility to convert the ELF object to Macho-O for linking with LD. As a result, while running JWASM on Mac OS X, it failed to produce valid ELF object files, something the compiled Windows counterpart did with flying colors, indicating that there is some work ahead in providing JWASM as a more mature, consistent and reliable cross-platform assembler.
Despite the current limitations in Mac OS X support, JWASM still packs a punch. The main benefit of JWASM, arguably, is the nearly full support of Microsoft's Macro Assembler (MASM) syntax. As those in the assembly language community may already know, Microsoft's desire to continually support the development of MASM has been dwindling over the years — if only measurable by a decreasing lack of interest, updates and bug fixes — and thus the future of MASM remains uncertain.
Furthermore, JWASM does not have the "non open-source" and "Windows-centric" development restrictions that the MASM license entails. JWASM allows for unrestricted MASM-style operating system and embedded development, as well as development on/for other platforms, e.g. Linux. With all of that in mind, and as it matures, the choice of utilizing JWASM for software development, within toolchains, etc... is becoming more of a serious consideration for software developers.
While Intel-style syntax x86 assemblers such as NASM have been around for a while, JWASM opens up a new possibility to those familiar with MASM-style syntax to develop in the domains (i.e. other than Windows) in which assemblers such as NASM currently thrive. JWASM is a welcomed tool that supplements the entire x86 assembly language community and will hopefully, in time, generate new low-level interests and solutions.
JWASM binaries, source, documentation, license information and examples can be found at http://www.japheth.de/JWasm.html