Supervisor-Modus?

09/12/2013 - 13:33 von usenet | Report spam
Hallo,

im Laufe der Atari-Evolution gab es verschiedene empfohlene Methoden den
Supervisor-Modus in einer Applikation zu erreichen.

Ich habe lange die Methode aus dem Profibuch verwendet, aber das
Profibuch wußte damals noch nichts von MagiC und MiNT und Speicherschutz
etc.pp.

Erst war es Super(), dann mit Supexec(), dann mit Setexec():

/* Zeiger auf Cookie Jar holen */
LONG *cookiejar = (LONG *) Setexc(0x5A0/4, (void (*)())-1);

Ist das noch gültig? Noch »guter Stil«? Oder wie macht man es heute
richtig?

x'p dcsa, mcas, f'up dcsa

Grüße
Götz
http://www.knubbelmac.de/
 

Lesen sie die antworten

#1 Uwe Seimet
09/12/2013 - 19:36 | Warnen spam
On 12/09/2013 01:33 PM, Goetz Hoffart wrote:

Hallo Götz,

diesen Beitrag bitte als Diskussion im Sinne dieser Gruppe werten ;-).

im Laufe der Atari-Evolution gab es verschiedene empfohlene Methoden den
Supervisor-Modus in einer Applikation zu erreichen.

Ich habe lange die Methode aus dem Profibuch verwendet, aber das
Profibuch wußte damals noch nichts von MagiC und MiNT und Speicherschutz
etc.pp.

Erst war es Super(), dann mit Supexec(), dann mit Setexec():

/* Zeiger auf Cookie Jar holen */
LONG *cookiejar = (LONG *) Setexc(0x5A0/4, (void (*)())-1);

Ist das noch gültig? Noch »guter Stil«? Oder wie macht man es heute
richtig?



Die Lösung mit Setexec() verstehe ich nicht. Hier wird doch nur der
Zeiger auf den cookie jar (oder einen anderen Systemvektor) geholt, wie
der Kommentar schon sagt. Beliebigen Code im Supervisor-Modus ausführen
kann man damit nicht. Lediglich einen Vektor lesen, der nur im
Supervisor-Modus zugànglich ist.

Was Super() angeht hat dies den Vorteil, dass der Programmfluss an der
Stelle fortgeführt wird, an der man sich gerade befindet, und die
meisten Prozessor-Register erhalten bleiben. Bei Supexec() ist das nicht
der Fall, d. h. man muss die Daten, die man wàhrend des Aufrufs
möglicherweise braucht, irgendwo zwischenspeichern.

Grüße

Uwe

Dr. Uwe Seimet http://www.linkbylink.net/

Ähnliche fragen