Initiation au langage d'assemblage x86 | ||
---|---|---|
Précédent | Chapitre 3. Programmation structurée en assembleur | Suivant |
Si vous préférez éviter les fonctions, vous pouvez toujours préserver une certaine lisibilité de votre code à l'aide des macros.
Contrairement aux fonctions, qui sont effectivement traduites comme telles dans le code binaire généré par le compilateur, les macros ne sont là que pour aider le programmeur à y voir plus clair, mais dans le code final on ne trouvera aucun appel. Leur code sera juste inséré à l'endroit des différentes références qui y auront été faites.
Notre programme coucou_func_asm.asm se transforme donc en :
Exemple coucou_func_asm.asm
%macro write_screen 2 mov eax,4 mov ebx,1 mov ecx,%1 mov edx,%2 int 80h %endmacro section .text global _start _start: write_screen msg,msg_len mov eax,1 int 80h section .data msg db "coucou",0x0A msg_len equ $ - msg
On voit que la définition d'une macro est toute simple. Il suffit juste de spécifier derrière son nom le nombre d'arguments qu'elle attend. Pour ce qui est de l'appel, on dirait presque un langage évolué :-)
Si vous regardez la taille du code généré, elle est presque équivalente à la taille de notre coucou_asm.asm de la Section 1.3, mais avec l'appel en plus.
Précédent | Sommaire | Suivant |
Les fonctions | Niveau supérieur | BIBLIOGRAPHIE |