3.3. NASM

The Netwide Assembler project provides cool i386 assembler, written in C, that should be modular enough to eventually support all known syntaxes and object formats.

3.3.1. Where to find NASM

http://www.nasm.us, http://sourceforge.net/projects/nasm/

Binary release on your usual metalab mirror in devel/lang/asm/ directory. Should also be available as .rpm or .deb in your usual Linux distribution.

3.3.2. What it does

The syntax is Intel-style. Comprehensive macroprocessing support is integrated.

Supported object file formats are bin, aout, coff, elf, as86, obj (DOS), win32, rdf (their own format).

NASM can be used as a backend for the free LCC compiler (support files included).

Unless you're using BCC as a 16-bit compiler (which is out of scope of this 32-bit HOWTO), you should definitely use NASM instead of say AS86 or MASM, because it runs on all platforms.

Note

NASM comes with a disassembler, NDISASM.

Its hand-written parser makes it much faster than GAS, though of course, it doesn't support three bazillion different architectures. If you like Intel-style syntax, as opposed to GAS syntax, then it should be the assembler of choice...

Note: There are few programs which may help you to convert source code between AT&T and Intel assembler syntaxes; some of the are capable of performing conversion in both directions.