Copie du wikimiroir

Ceci est un miroir du wiki de pascal.chat. La modification, l’historique et la connexion se trouvent là-bas.

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.

Version 1, dernière modification par WikiArchive .