The assembler output/fr
English · Français
Retour au contenu FPC internals
La sortie assembleur
(dernière mise à jour pour fpc version 1.0.x)
Tout le code est généré via une liste chaînée d'instructions spéciale. La base de ceci est un objet spécial, un assembleur abstrait qui implémente toutes les directives qui sont généralement implémentées dans les différents assembleurs disponibles sur le marché. Lorsque le générateur de code et l'analyseur génèrent la sortie finale, elle est générée sous forme de liste chaînée pour chacune des sections disponibles pour l'assembleur de sortie. Chaque entrée de la liste chaînée est soit une instruction, soit l'une des directives abstraites de l'assembleur.
http://www.pjh2.de/fpc/CompilerInternalsFigure11.png
Organisatioin de la génération de l'assembleur
Les différentes sections possibles trouvées dans la sortie sont les suivantes :
| Nom de section interne | Description |
|---|---|
| ExparAsmList | Liste temporaire |
| DataSegment | Variables initialisées |
| CodeSegment | Instructions et directives de code générales |
| DebugList | Informations de débogage |
| WithDebugList | ??????????????? |
| Consts read | Constantes seulement. |
| ImportSection | Symboles importés |
| ExportSection | Symboles exportés |
| ResourceSection | Données de ressource |
| RttiList | Données d'information de type à l'exécution (RTTI) |
| ResourceStringList | Données chaînes de ressource |
Les directives suivantes pour l'assembleur abstrait qui existent actuellement.
Type de noeuds de l'assembleur abstrait :
Type de noeud d'entrée
Description
Ait_None
Cette entrée dans la liste chaînée est invalide (cela ne devrait jamais arriver)
Ait_Direct
Sortie directe vers le fichier assembleur résultant (comme chaîne de caractères)
Ait_String
Chaîne courte avec une longueur prédéfinie
Ait_Label
Etiquette assembleur numérotée utilisée pour les sauts
Ait_Comment
Commentaire de sortie assembleur
Ait_Instruction
Instruction spécifique de processeur
Ait_DataBlock
Bloc de données non initialisées (BSS)
Ait_Symbol
L'entrée représente un symbole (exporté, importé ou un autre type de symbole public).
Types possibles: NONE, EXTERNAL, LOCAL et GLOBAL p.ex. : Un symbole suivi par un Ait_const_32bit
Ait_Symbol_End
Symbole fin (par exemple la fin d'une routine)
Ait_Const_32bit
Constante 32-bit initialisée(sans un symbole)
Ait_Const_16bit
Constante 16-bit initialisée (sans un symbole)
Ait_Const_8bit
Constante 8-bit initialisée (sans un symbole)
Ait_Const_symbol
????????????
Ait_Real_80bit
(x86) Constante en virgule flottante 80-bit initialisée (sans symbole). Note type REAL obsolète.
Ait_Real_64bit
Constante en virgule flottante en double précision IEEE initialisée (sans symbole)
Ait_Real_32bit
Constante en virgule flottante en simple précision IEEE initialisée (sans symbole)
Ait_Comp_64bit
(x86) Entier 64-bit en virgule flottante (comp) initialisé (sans symbole)
Ait_Align Alignment
Directive
Ait_Section Section
Directive
Ait_const_rva
(Win32)
Ait_Stabn
Information de débogage stabs (valeur numérique)
Ait_Stabs
Information de débogage stabs (chaîne de caractères)
Ait_Force_Line stabs
Ligne d'information de débogage
Ait_Stab_Function_Name
Nom de routine des informations de débogage stabs
Ait_Cut
Coupure dans les fichiers assembleur (utilisé pour la liaison intelligente)
Ait_RegAlloc
Information de débogage pour l'allocateur de registre
Ait_Marker
????????????
Ait_Frame
(Alpha)
Ait_Ent
(Alpha)
Ait_Labeled_Instruction
(m68k)
Ait_Dummy
Inutilisé - Ne devrait jamais apparaître
From the Free Pascal wiki, page "The assembler output/fr", as it stood on 2021-03-20 after a change by E-ric, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's Licensing page. If you have concerns about this material, message the admin.