Le compiulateur apelle l'assembleur par la suite, donc on retrouvera
tous les éléments par défaut de l'assembleur.
On a donc systématiquement systématiquement les
sections suivantes :
- .text contient le code initialisé (TOUT le code C
créé)
- .data crée par l'assembleur, le C n'y met strictement
rien (il utilise le mécanisme .cinit)
- .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]
- .stack contient la pile utilisée par le
C (taille indiquée par l'option -stack dans le
linker)
Les autrs éléments :
- Variables globales initialisées. Ces variables doivent
être intialisées avant le démarrage du programme.
Il existe 2 possibilités :
- RAM intialisation : Le contenu des variables globales à
initialiser est regroupé dans une section .cinit.
Cette section n'est pas chargée directement en mémoire
du DSP mais le le chagreur s'en sert pour venir initialiser à
la main
- ROM initialisation : Le contenu de .cinit contient
les valeurs des variables globales. Cette section sera chargée
en mémoire, et le run-time effectuera les initialisations
nécessaires.
- .const contient les constantes utilisées en C
- .system bloc utilisé par les focntions malloc
Mapping mémoire.
Sections à y inclure :
- .text : code
- .cinit : données pour l'initialisation des variables
globales
- .stack : pile du C
- .const : constantes du C
- .sysmem : heap, tas pour l'allocation dynamique
(malloc)
- .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.
|