next up previous contents index
Weiter: 14.2 Attribut-Definitionen Hinauf: 14.1 Darstellungsklauseln Zurück: 14.1.3 Die interne

14.1.4 Die Festlegung von Adressen

  

In Ada ist auch möglich, genau festzulegen, wo im Speicher eine Variable oder eine Konstante liegt, z.B.:

DA_Konverter: IO_Port;
for DA_Konverter use at 16#17A4#;

Außerdem kann man die Startadresse eines Unterprogrammes, eines Paketes oder eines Tasks exakt festlegen, z.B.:

procedure Shut_down;
for Shut_down use at 16#0815#;

In diesem Fall bewirkt der Aufruf der Prozedur Shut_down die Ausführung der unter der angegebenen Adresse stehenden Maschinensprachen-Routine.

Interrupt-Service-Routinen  können in Ada realisiert werden, indem die Adresse eines Entry's festgelegt wird, z.B.:

task power_failure is
entry fail;
for fail use at 16#AFFE#;
end power_failure;

task body power_failure is
begin
loop
accept fail;
-rettesich,werkann!
end loop;
end power_failure;

Wenn der Hardware-Interrupt auftritt und die Exekution zur Adresse 16#AFFE# springt, so ist dies genauso, als ob der Entry fail aufgerufen worden wäre.

Auch hier hat sich in Ada95 die Syntax geändert; man schreibt jetzt

for DA_Konverter'ADDRESS use 16#17A4#;

Auch hier ist die alte Notation noch gültig.



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