Netwide Assembler

De la Viquipèdia, l'enciclopèdia lliure
Netwide Assembler
Modifica el valor a Wikidata

Tipusprogramari lliure, llenguatge de programació, Llenguatge assemblador x86, assembler (en) Tradueix i compilador Modifica el valor a Wikidata
Versió inicial1996 Modifica el valor a Wikidata
Versió estable
2.16.03 (17 abril 2024) Modifica el valor a Wikidata
Llicènciallicència BSD de 2 clàusules
GNU LGPL
llicència BSD Modifica el valor a Wikidata
Característiques tècniques
Sistema operatiumultiplataforma, Linux, Mac OS clàssic, Microsoft Windows, DOS, KolibriOS i BSD Modifica el valor a Wikidata
Plataformax86 Modifica el valor a Wikidata
Escrit enC Modifica el valor a Wikidata
Equip
Creador/sSimon Tatham Modifica el valor a Wikidata
Desenvolupador(s)H. Peter Anvin Modifica el valor a Wikidata
Més informació
Lloc webnasm.us (anglès) Modifica el valor a Wikidata
Stack ExchangeEtiqueta Modifica el valor a Wikidata
SourceForgenasm Modifica el valor a Wikidata

GitHub: 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.[1]

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.[2] És un programari de codi obert publicat sota els termes d'una llicència BSD simplificada (de dues clàusules).[3]

Característiques[modifica]

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.[4]

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.[5] 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.[6] També evita funcions com la generació automàtica de substitucions de segments (i la directiva ASSUME relacionada) utilitzada per MASM i assembladors compatibles.[7]

Procés de Link[modifica]

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) [8] 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[modifica]

La versió 2.00 es va publicar el 28 de novembre de 2007, afegint suport per a les extensions x86-64.[9] 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.[10]

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[modifica]

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