Format des fichiers de code objet
Le format du fichier de code objet a généralement la syntaxe suivante :
Nom | Détails |
---|---|
LoadFile | { Frame }. |
Frame | FrameType FrameSize { FrameWord }. |
FrameType | "200B" | "201B" |.... | "377B". |
FrameSize | Number, /nombre de FrameWords/ |
FrameWord | Number. |
Le fichier de chargement est une séquence de mots, avec FrameType et Number chacun représentés dans un mot. Le fichier de code objet obéit à une structure syntaxique, appelée ObjectFile.
Nom | Détails |
---|---|
ObjectFile | Module { Module }. |
Module | [ VersionFrame ] HeaderFrame [ ImportFrame ] {ModuleCode | DataFrame }. |
VersionFrame | VERSION FrameSize VersionNumber. |
FrameSize | Number. |
VersionNumber | Number. |
HeaderFrame | MODULE FrameSize ModuleName DataSize [ CodeSize Flags ] |
ModuleName | Moduleldent ModuleKey. |
Moduleldent | Letter { Letter | Digit} {"OC"}. /exactement 16 caractères/ |
ModuleKey | Number Number Number. |
DataSize | Number, /en mot/ |
CodeSize | Number, /en mot/ |
Flags | Number. |
ImportFrame | IMPORT FrameSize {ModuleName}. |
ModuleCode | CodeFrame [ FixupFrame ]. |
CodeFrame | CODETEXT FrameSize WordOffset { Codeword }. |
WordOffset | Number, /en mot depuis le début du module/ |
Codeword | Number. |
FixupFrame | FIXUP FrameSize {ByteOffset}. |
ByteOffset | Number, /en octet depuis le début du module/ |
DataFrame | DATATEXT FrameSize WordOffset { DataWord }. |
DataWord | Number. |
VERSION | "200B". |
MODULE | "201B". |
IMPORT | "202B". |
CODETEXT | "203B". |
DATATEXT | "204B". |
FIXUP | "205B" |
Actuellement, le numéro de version est égal à 3.
Actuellement, les drapeaux sont définis sur 0.
Les ByteOffsets dans FixupFrame pointent vers les octets du code contenant les numéros de module locaux. Les numéros de module locaux doivent être remplacés par les numéros réels des modules correspondants. Le numéro de module local 0 représente le module lui-même, le numéro de module local i (i > 0) représente le i-ème module dans l'ImportFrame. Un programme est activé par un appel à la procédure 0 de son module principal.