RSS Feed for This PostCurrent Article

Open Source Assembler

The Netwide Assembler, NASM, is an 80×86 and x86-64 assembler designed for portability and modularity. It supports a range of object file formats, including Linux and *BSD a.out, ELF, COFF, Mach-O, Microsoft 16-bit OBJ, Win32 and Win64. It will also output plain binary files. Its syntax is designed to be simple and easy to understand, similar to Intel’s but less complex. It supports all currently known x86 architectural extensions, and has strong support for macros.

The Netwide Assembler grew out of an idea on comp.lang.asm.x86 (or possibly alt.lang.asm – I forget which), which was essentially that there didn’t seem to be a good free x86-series assembler around, and that maybe someone ought to write one.

  • a86 is good, but not free, and in particular you don’t get any 32-bit capability until you pay. It’s DOS only, too.
  • gas is free, and ports over to DOS and Unix, but it’s not very good, since it’s designed to be a back end to gcc, which always feeds it correct code. So its error checking is minimal. Also, its syntax is horrible, from the point of view of anyone trying to actually write anything in it. Plus you can’t write 16-bit code in it (properly.)
  • as86 is specific to Minix and Linux, and (my version at least) doesn’t seem to have much (or any) documentation.
  • MASM isn’t very good, and it’s (was) expensive, and it runs only under DOS.
  • TASM is better, but still strives for MASM compatibility, which means millions of directives and tons of red tape. And its syntax is essentially MASM’s, with the contradictions and quirks that entails (although it sorts out some of those by means of Ideal mode.) It’s expensive too. And it’s DOS-only.


Trackback URL


RSS Feed for This Post1 Comment(s)

  1. ker2x | Jan 15, 2010 | Reply

    Don’t forget FASM (flat-assembler), up to date, multi-format (linux, bsd, dos, win,…), free, …

Sorry, comments for this entry are closed at this time.