Voici comment créer un programme "Hello, World!" en utilisant l'assembleur GNU (GAS).
Étape 1 : Écrire le code assembleur
Vous pouvez écrire le code dans un fichier avec l'extension .s, par exemple
hello.s. Voici un exemple de code assembleur pour un programme "Hello,
World!" :
.section .data
msg:
.ascii "Hello, World!\n" # La chaîne de caractères avec un saut de ligne à la fin
len = . - msg # Calculer la longueur du message
.section .text
.global _start
_start:
# syscall write(int fd, const void *buf, size_t count)
mov $1, %rax # syscall number for write (1)
mov $1, %rdi # file descriptor (stdout)
mov $msg, %rsi # pointer to the message
mov $len, %rdx # message length
syscall # effectuer l'appel système
# syscall exit(int status)
mov $60, %rax # syscall number for exit (60)
xor %rdi, %rdi # return code 0
syscall # effectuer l'appel système
Explication du code
.section .data: Cette section contient les données du programme, ici le message "Hello, World!\n"..section .text: Cette section contient le code exécutable.msg: C'est une étiquette (label) pointant vers le début de la chaîne de caractères._start: C'est le point d'entrée du programme. Par défaut, le linker utilise cette étiquette pour savoir où commence l'exécution.mov $1, %rax: Place le numéro de l'appel systèmewrite(1) dans le registrerax.mov $1, %rdi: Place le descripteur de fichierstdout(1) dans le registrerdi.syscall: Exécute l'appel système en utilisant les paramètres placés dans les registres.
Étape 2 : Assembler le code
Pour assembler le fichier assembleur en un fichier objet .o, vous utilisez la commande suivante :
as -o hello.o hello.s
Étape 3 : Lier le fichier objet
Une fois le fichier objet généré, vous devez le lier pour produire un
exécutable. Utilisez ld (le linker) pour cela :
ld -o hello hello.o
Étape 4 : Exécuter le programme
Maintenant que vous avez l'exécutable hello, vous pouvez l'exécuter simplement :
./hello
Cela affichera "Hello, World!" dans le terminal.
Résumé des commandes
-
Écrire le code dans
hello.s(comme montré ci-dessus). -
Assembler le code :
as -o hello.o hello.s -
Lier le fichier objet :
ld -o hello hello.o -
Exécuter le programme :
./hello
Avec ces étapes, vous aurez un programme "Hello, World!" minimaliste écrit en assembleur avec GAS, qui fonctionne sur un système Linux.
documentation provided by: chatgpt