« Netwide Assembler » : différence entre les versions

imported>fkEndpqj
Initial import
 
(Aucune différence)

Dernière version du 9 mai 2025 à 19:27

1 Présentation[modifier le wikicode]

Le Netwide Assembler, souvent abrégé en NASM, est un assembleur libre et open source pour l'architecture x86, utilisé pour écrire du code machine en langage assembleur. Il est reconnu pour sa syntaxe claire, ses nombreuses fonctionnalités et son portabilité sur différentes plateformes. NASM est particulièrement apprécié des développeurs pour sa facilité d'utilisation et sa flexibilité.

2 Historique[modifier le wikicode]

NASM a été créé en 1996 par Simon Tatham et Julian Hall. Le projet a rapidement gagné en popularité grâce à sa licence libre et sa capacité à générer du code objet pour diverses plateformes. Depuis sa création, NASM a continué d’évoluer, intégrant de nouvelles fonctionnalités et supportant des architectures supplémentaires tout en restant fidèle à son objectif initial : fournir un assembleur performant et accessible.

3 Fonctionnalités[modifier le wikicode]

  • Syntaxe simple et lisible
  • Support complet des instructions x86 et x86-64
  • Génération de multiples formats de fichiers objets : COFF, ELF, Mach-O, Win32, etc.
  • Macro-instructions puissantes facilitant la programmation
  • Support de la programmation modulaire grâce aux fichiers source multiples
  • Opérations sur bits, manipulations de registres, et directives avancées
  • Portabilité sur Windows, Linux, macOS et autres systèmes

4 Utilisation[modifier le wikicode]

NASM est principalement utilisé pour :

  1. L'écriture de pilotes et de routines système performantes.
  2. Le développement de programmes nécessitant un contrôle bas niveau.
  3. L'apprentissage du fonctionnement des processeurs x86.
  4. La rétro-ingénierie et l'étude du code assembleur.

5 Exemple simple[modifier le wikicode]

Voici un petit extrait de code NASM qui affiche "Hello, world!" dans un programme Linux 64 bits :

section .data
    msg db "Hello, world!", 0Ah
    len equ $ - msg

section .text
    global _start

_start:
    mov rax, 1          ; syscall: sys_write
    mov rdi, 1          ; file descriptor: stdout
    mov rsi, msg        ; message to write
    mov rdx, len        ; message length
    syscall

    mov rax, 60         ; syscall: sys_exit
    xor rdi, rdi        ; status 0
    syscall

6 Liens externes[modifier le wikicode]

7 Voir aussi[modifier le wikicode]