Nächste Seite: Objektdatei Aufwärts: Interna von M2Amiga Vorherige Seite: Interna von M2Amiga

# Dateiformate

verwendet drei spezielle Dateiformate: Objektdatei, Referenz- beziehungsweise Symboldatei sowie Fehlerdatei. Diese drei Formate werden nun ausführlich beschrieben.

Die Dateiformate werden mit Hilfe einer EBNF 6.1-ähnlichen Sprache beschrieben. EBNF wird häufig zur Beschreibung der Syntax einer Programmiersprache verwendet (z.B. [#!pim4!#]). Sie ist aber auch geeignet, das Format einer Datei zu beschreiben. Allerdings sind die Terminalsymbole im Falle einer Datei keine Worte -- wie beispielsweise ,,`IF``` in --, sondern entweder Konstanten oder Variablen, die einen bestimmten Typ haben. Aus diesem Grund beschreiben wir Terminalsymbole mit Hilfe von -Typen und Konstanten. Hier folgen die Elemente unserer ,,EBNF``:

Der Punkt ,,`.``` am Ende der Regel markiert deren Ende. Alles Nachfolgende ist Kommentar. Die obigen Regeln können zu komplexeren Regeln zusammengefasst werden, also beispielsweise ,,`A=BC`|`DE.```. Dabei bindet ,,`|``` schwächer als die einfache Folge. So bedeutet ,,`A=BC`|`DE.```, dass ,,`A``` entweder durch die Folge ,,`BC``` oder durch ,,`DE``` ersetzt werden darf. Dies kann durch Klammern beeinflusst werden: so besagt die Regel ,,`A=B(C`|`D)E.```, dass ,,`A``` durch ,,`BCE``` oder durch ,,`BDE``` ersetzt werden darf.

Eine vollständige Dateibeschreibung könnte folgendermassen aussehen:

Die Bedeutung dieser Zeilen im einzelnen:

1. Die Datei besteht aus einer Kennzeichnung `ID`, gefolgt von einer Zahl und keinem oder beliebig vielen Blöcken und eventuell einem Namen.
2. Die Kennzeichnung der Datei hat den Wert 17 und wird in vier Byte dargestellt.
3. Die Zahl der Blöcke ist durch zwei Byte gegeben. Mit dem Kommentar wird veranschaulicht, was die EBNF alleine nicht aufzeigen kann: die Zahl ,,`NumBlocks``` gibt gerade die Anzahl der darauffolgenden Blöcke an. Hier handelt es sich um eine semantische Angabe zum Eintrag ,,`NumBlocks```.
4. Ein `Block` besteht aus einer Grössenangabe und einer Kennzeichnung, gefolgt von beliebig vielen Worten.
5. Die Grösse des Blocks wird durch vier Byte angegeben. Auch hier schliesst sich wieder ein Kommentar an, der die Beziehung zwischen dem Wert ,,`Size``` und den folgenden Worten aufzeigt.
6. Die `CodeId` belegt zwei Byte und hat den Wert 1.
7. Die `DataId` belegt ebenfalls zwei Byte und hat den Wert 2.
8. Das `Word` besteht aus zwei Byte mit beliebigem Inhalt.
9. Der `Name` besteht aus acht Zeichen.

Der folgende Hexdump stellt eine nach obigen Schema gültige Datei dar. Diese enthält zunächst die `ID`. Darauf folgt die Angabe, dass genau ein `Block` vorhanden ist. Dieser `Block` enthält vier Byte. Es ist ein Datenblock und enthält die vier Byte 1E 84 95 0A. Schliesslich folgt der `Name` ,,Test``.

> `00 00 00 11 00 01 00 00 00 04 00 02 1E 84 95 0A
> 53 65 74 73 00 00 00 00`

Unterabschnitte

- Objektdatei
- Symbol-/Referenzdatei
- Fehlerdatei und Fehlermeldungen

Nächste Seite: Objektdatei Aufwärts: Interna von M2Amiga Vorherige Seite: Interna von M2Amiga