Netwide Assembler

From Wikipedia, the free encyclopedia

Netwide Assembler
Design by Simon Tatham, Julian Hall
Developed by H. Peter Anvin, et al.
Latest release 2.02 / February 19, 2008 (2008-02-19); 111 days ago
OS Microsoft Windows, UNIX-like, OS/2, Mac OS, DOS
Platform x86, x86-64
Available in English
License GNU Lesser General Public License
Website http://nasm.sourceforge.net/

The Netwide Assembler (NASM) is an assembler and disassembler for the Intel x86 architecture. It can be used to write 16-bit, 32-bit (IA-32) and 64-bit (x86-64) programs. NASM is considered to be one of the most popular assemblers for Linux.[1]

NASM was originally written by Simon Tatham with assistance from Julian Hall, and is currently maintained by a small team led by H. Peter Anvin. Released first under an original license, it is now available as free software under the terms of the GNU Lesser General Public License.

Contents

[edit] Features

NASM can output various binary formats on any machine, including COFF, Portable Executable, a.out, ELF, Mach-O, and the native Minix binary format. NASM even defines its own binary format, RDOFF. 32-bit programs can be written for NASM in such a way that they are portable to all 32-bit x86 operating systems, if the right libraries are present.

The variety of output formats allows one to retarget programs to virtually any x86 operating system. In addition, NASM can create flat binary files, usable in writing boot loaders, ROM images, and various facets of OS development. NASM can run on non-x86 platforms, such as SPARC and PowerPC, though it cannot output programs usable by those machines.

NASM uses the traditional Intel assembly syntax for x86 assembly language (as opposed to AT&T syntax). It also avoids features such as automatic generation of segment overrides (and the related ASSUME directive) used by MASM and compatible assemblers, as these can often be confusing.[citation needed]

[edit] Linking

NASM principally outputs object files, which are generally not executable in and of themselves. The only exception to this are flat binaries (e.g. .COM) which are inherently limited in modern use. To translate the object files into executable programs, an appropriate linker must be used, such as the Visual Studio "LINK" utility for Windows, or ld for UNIX-like systems.

[edit] Development

On 28 November 2007, version 2.00 was released, adding support for x86-64 extensions.

The development version is not uploaded to SourceForge.net; instead it is checked in to the project's own Git repository.

[edit] See also

[edit] References

  1. ^ Ram Narayan. Linux assemblers: A comparison of GAS and NASM. “two of the most popular assemblers for Linux®, GNU Assembler (GAS) and Netwide Assembler (NASM)”

[edit] Further reading

  • Jeff Duntemann (2000). Assembly Language Step by Step. J Wiley and Sons. ISBN 0471375233. 

[edit] External links