next up previous
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 EBNF6.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``:


\begin{ebnf}{A}
\item[A] {\tt B\,C.} \\
Diese Regel besagt, dass {\tt A} durch...
... einen {\tt INTEGER} verwendet wird,
in diesem Fall also 2 Byte. \\
\end{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:


\begin{ebnf}
% latex2html id marker 12188
{NumBlocks}
\item[Datei] {\tt ID NumBl...
...AY [0..7] OF CHAR\dq.}
\hfill(\arabic{filefmt}\stepcounter{filefmt})
\end{ebnf}

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
next up previous
Nächste Seite: Objektdatei Aufwärts: Interna von M2Amiga Vorherige Seite: Interna von M2Amiga
Claudio Nieder 2000-11-12