Un "hello world" sous linux (utilise l'assembleur as et le linker ld)

Contenu du snippet

C'est juste pour montrer comment faire un simple "Hello World" avec AS.
Comme ceci, le code montre la syntaxe AT&T. Une petite modification a été apportée pour calculer la taille des chaînes automatiquement, merci à _DUNE2_ pour l'apport de cette ajout !

Source / Exemple :


.section .text
   .global _start
   _start:
       movl    $4, %eax
       movl    $1, %ebx
       movl    $chaine1, %ecx
       movl    $(chaine2-chaine1), %edx ; calcul de la taille automatique
       int    $0x80

       movl $4,%eax
       movl $1,%ebx
       movl $chaine2,%ecx
       movl $(chaine3-chaine2),%edx ; calcul de la taille automatique
       int $0x80

       movl    $1, %eax
       int    $0x80

   .section .data ; section ki sert a déclarer des variables initialisés
   chaine1:    .string    "Voici une première chaine\n"
   chaine2:    .string    "Et en voici une seconde\n"
   chaine3:

   .section .bss
   nbr3:    .long ; sert a rien, c juste pour montrer que ce segment sert a mettre des varibles non initialisés

Conclusion :


Bon, c'est simple, on utilise l'appel system "write" pour afficher deux chaines.
On fait appel à l'interruption 0x80, c'est le kernel.
Voila, pour compiler on fait:
as -o prog.o prog.asm
ld -s -o prog prog.o

Voila
Bonne Prog
Bouba

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.