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 :
- L'écriture de pilotes et de routines système performantes.
- Le développement de programmes nécessitant un contrôle bas niveau.
- L'apprentissage du fonctionnement des processeurs x86.
- 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