Variables de l'assembleur - variables du programme

Quelques explications

Lorsque l'on écrit un programme avec l'assembleur GNU, on peut définir en plus des variables du programme (qui apparaissent dans la section .data) des variables de l'assembleur (que l'on déclare avec .equ ou .set).

Les variables du programme n'existent que dans le programme une fois celui-ci compilé et exécuté. Elles prennent donc de l'espace mémoire et les manipuler utilise du temps à chaque exécution du programme.

Les variables de l'assembleur n'existent que pendant la compilation du programme. Elles n'occupent donc aucun espace mémoire et les manipuler ne prend que du temps lors de la compilation, pas à l'exécution. Par contre, les manipulations que l'on peut faire avec sont très limitées.

Le code suivant montre que la variable de l'assembleur N_ASM n'apparaît pas dans le code compilé alors que la variable du programme n_asm y apparaît.

1                            .equ N_ASM,5
2
3                            .data
4 0000 05000000      n_prg:  .int 5
5
6                            .text
7                            .global main
8                    main:
9 0000 55                     pushl %ebp
10 0001 89E5                  movl %esp,%ebp
11
12 0003 C9                    leave
13 0004 C38D7600              ret
En pratique, on utilise les variables de l'assembleur pour les variables que l'on manipule peu (principalement les constantes) et pour tous les nombres sur lesquels on calcule, on utilise les variables du programme.

Dernière mise à jour : 27 mai 2002 | Norme XHTML | Norme CSS