Lorsqu'aucune directive de section n'est précisée, la section
par défaut est .text
L'assembleur crée systématiquement les sections suivantes
:
- .text contient du code initialisé
- .data contient les données qui seront initialisées
- .bss contient les données non-initialisées (ne
fait que réserver l'espace mémoire).
Syntaxe : .bss symbole,taille [chaque symbole déclaré
doit contenir .bss devant, peut être utilisé à l'intérieur
d'une autre section]
Il est possible d'utiliser également :
- section initialisée perso (.sect), idem .text
avec nom perso
Syntaxe : .sect "nom_sect"
- section initialisée perso absolue (.asect), idem
.text avec nom perso, et indique directement l'adresse mémoire
(donc idem .sect"ma_sect" + directive dans le fiochier de
mapping) => OBSOLETE
- section non initialisée perso (.usect) idem
.bss avec nom perso
Syntaxe : symbole .usect "nom_sect"
taille,[alignement] [chaque symbole déclaré
doit suivre cette syntaxe, peut être utilisé à l'intérieur
d'une autre section]
Mapping mémoire.
Sections à y inclure :
- .text : code
- .data : données initialisée (comprtement idem
bss pour l'@ d'allocation)
- .bss
- Sans directive .bss dans le source ASM, alloué de taille
nulle en 0
- Avec directive .bss dans le source ASM sans instruction de mapping,
alloué après le .text
- section perso initialisées ou non.
Ex :
.data
CTRL1 .word 02c0h ;
CTRL4 .word 02c0h ;
.bss symbol2,5
CTRL4 .word 02c0h ; toujours dans data
.text
ldi 06,IOF
ldi 06,IOF
ldi 06,IOF
.bss symbol10,5
ldi 06,IOF ; toujours dans .text
tun2 .usect "boxon",13
ldi 06,IOF ; toujours dans .text
|