Segments standards C dans un fichier COFF
[Home DspBoard]


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.