|
Struktur toc
Einordnung in die Gesamtstruktur
- Modul
- machine
- Erstellungszeitpunkt
- Aufgabe 4 (zum Teil vorgegeben)
- Dateien
- toc.h toc.inc toc.asm toc.c
Beschreibung
Die Struktur toc dient dazu, bei einem Koroutinenwechsel die Werte der
nicht-flüchtigen Register zu sichern.
Die Initialisierung, das Sichern und Wiederherstellen der Register
wird von den Funktionen toc_settle(), toc_go und toc_switch
übernommen.
Strukturelemente
void *ebx, *esi, *edi, *ebp, *esp;
Funktionen
void toc_settle (struct toc* regs, void* tos, void
(*kickoff)(void*), void* object);
- Diese Funktion bereitet die Struktur toc für die erste
Aktivierung vor. Dazu müssen Registerinhalte und Stack so
initialisiert werden, dass bei der ersten Aktivierung die
Ausführung mit der Funktion kickoff beginnt,
die wiederum den Zeiger object als ersten Parameter
auf dem Stack vorfinden muß.
void toc_go (struct toc* regs);
- Diese Funktion lädt die Prozessorregister mit den Inhalten
der Struktur regs.
void toc_switch (struct toc* regs_now, struct toc*
regs_then);
- Diese Funktion führt einen Kontextwechsel durch. Dazu
brauchen nur die aktuellen Registerwerte in regs_now
gesichert und durch die Werte von regs_then ersetzt
werden.
Anmerkung
Die Vorgabe enthält die Dateien toc.h und
toc.inc , die die Struktur toc für den Gebrauch aus
C/C++ und Assemblerfunktionen heraus definieren. An diesen Dateien
solltet ihr nichts verändern.
Die Funktion toc_settle
kann in C implementiert werden, für
toc_go und toc_switch
wird Assembler benötigt.
Nähere Informationen zu den Aufgaben und der Implementierung von
toc_settle, toc_go und
toc_switch erhaltet ihr im nächsten Seminar.
|
|