Segments standards ASM dans un fichier COFF
[Home DspBoard]


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