# Netwide Assembler

El Netwide Assembler (NASM) és un muntador i desmuntador per a l'arquitectura Intel x86. Es pot utilitzar per escriure programes de 16 bits, 32 bits (IA-32) i 64 bits (x86-64). Es considera un dels assembladors més populars per a xips Linux i x86.
Va ser escrit originalment per Simon Tatham amb l'ajuda de Julian Hall. A 2016, és mantingut per un petit equip dirigit per H. Peter Anvin. És un programari de codi obert publicat sota els termes d'una llicència BSD simplificada (de dues clàusules).

## Característiques

NASM pot produir diversos formats binaris, com ara COFF, OMF, a.out, Format executable i enllaçable (ELF), Mach-O i fitxer binari (.bin, imatge de disc binari, utilitzat per compilar sistemes operatius), tot i que el codi independent de la posició. només és compatible amb fitxers d'objectes ELF. També té el seu propi format binari anomenat RDOFF.
La varietat de formats de sortida permet reorientar els programes a pràcticament qualsevol sistema operatiu (SO) x86. També pot crear fitxers binaris plans, que es poden utilitzar per escriure carregadors d'arrencada, imatges de memòria de només lectura (ROM) i en diverses facetes del desenvolupament del sistema operatiu. Pot executar-se en plataformes que no són x86 com a assemblador creuat, com ara PowerPC i SPARC, encara que no pot generar programes utilitzables per aquestes màquines.
NASM utilitza una variant de la sintaxi d'assemblatge d'Intel en lloc de la sintaxi d'AT&T. També evita funcions com la generació automàtica de substitucions de segments (i la directiva ASSUME relacionada) utilitzada per MASM i assembladors compatibles.

## Procés de Link

NASM produeix principalment fitxers d'objectes, que generalment no són executables per si mateixos. L'única excepció a això són els binaris plans (per exemple, .COM) que estan inherentment limitats en l'ús modern. Per traduir els fitxers objecte en programes executables, s'ha d'utilitzar un enllaçador adequat, com ara la utilitat "LINK" de Visual Studio per a Windows o ld per a sistemes semblants a Unix.

## Desenvolupament

La versió 2.00 es va publicar el 28 de novembre de 2007, afegint suport per a les extensions x86-64. Les versions de desenvolupament no es pengen a SourceForge.net, sinó que es registren a GitHub amb instantànies binàries disponibles a la pàgina web del projecte.
També hi ha disponible un motor de cerca per a documentació NASM.
El juliol de 2009, a partir de la versió 2.07, NASM es va llançar sota la llicència BSD simplificada (2 clàusules). Anteriorment, com que estava llicenciat sota LGPL, va portar al desenvolupament de Yasm, una reescriptura completa de la nova llicència BSD. Yasm va oferir suport per a x86-64 abans que NASM. També va afegir suport per a la sintaxi GNU Assembler.

## Referències

* ↑ Ram Narayan. «Linux assemblers: A comparison of GAS and NASM» (en anglès). IBM. Arxivat de l'original el 3 octubre 2013.
* ↑ «The Netwide Assembler» (en anglès). [Consulta: 27 juny 2008].
* ↑ «NASM Version History» (en anglès). [Consulta: 3 agost 2019].
* ↑ «NASM Manual» (en anglès). Arxivat de l'original el 23 febrer 2009. [Consulta: 15 agost 2009].
* ↑ «NASM Manual» (en anglès). Arxivat de l'original el 23 febrer 2009. [Consulta: 15 agost 2009].
* ↑ Randall Hyde. «NASM: The Netwide Assembler» (en anglès). Arxivat de l'original el 12 setembre 2010. [Consulta: 27 juny 2008].
* ↑ «NASM Manual» (en anglès). Arxivat de l'original el 23 febrer 2009. [Consulta: 15 agost 2009].
* ↑ «NASM Manual» (en anglès). Arxivat de l'original el 23 febrer 2009. [Consulta: 15 agost 2009].
* ↑ «The Netwide Assembler» (en anglès). [Consulta: 27 juny 2008].
* ↑ «NASM Doc Search Engine» (en anglès). Arxivat de l'original el 23 gener 2010. [Consulta: 14 setembre 2009].