next up previous contents index
Weiter: 14.1.4 Die Festlegung Hinauf: 14.1 Darstellungsklauseln Zurück: Die interne Darstellung

14.1.3 Die interne Darstellung von Record-Typen

 

Auch die interne Darstellung von Records können wir exakt festlegen, z.B.:

type IO_Port is
record
data: integer range 0 .. 255;
ready: boolean;
interrupt_enabled: boolean;
end record;

Eine mögliche interne Darstellung ist:

word: constant := 1Bytes;
for IO_Port use
record at mod 2;
data at 0word range 0..7;
ready at 1word range 3..3;
interrupt_enabled at 1word range 7..7;
end record;

Das at mod-Konstrukt legt fest, daß das Alignment des Records in jeweils zwei ganzen Speichereinheiten erfolgt. Mit at legt man fest, in welcher Speichereinheit sich die Record-Komponente befindet, und mit range legt man die Bit-Position der Komponente fest.

In Ada95 hat sich die Syntax des at mod-Konstruktes geändert; sie lautet nun

for IO_Port'ALIGNMENT use 2;

Allerdings ist die alte Notation noch gültig.

Neu ist auch, daß man nun die Ordnung der Bits festlegen kann. Zum Beispiel

for R'BIT_ORDER use Low_Order_First;



Johann Blieberger
Wed Feb 11 09:58:52 MET 1998