Ein paar Fragen, zb esp benutzen

28/11/2008 - 18:31 von Jens Dierks | Report spam
Hallo,
folgendes möchte ich nochmal etwas genauer wissen:
da die Register oft knapp werden, spielt man schon mal mit
dem Gedanken den ESP zu benutzen, wenn dieser in der
eigentlichen Routine eh nicht benutzt wird. Nur so einfach
pushen und poppen geht halt nicht weil diese Funktionen
selber ESP als Speicherpunkt benutzen(?). Aber wenn man
ESP in eine normale Variable, also relativ zu ebp abspeichert
und wieder ladet (und nicht callen muss), kann man wohl
dazwischen ESP auch "normal" benutzen(?).
Oder gibt es noch etwas zu beachten, anscheinend kann man
ESP auch nicht indiziert verwenden?

Und dann noch die Sache mit dem MXCSR Register,
verwendet das Jemand für simd Befehle?
Da gibt es ja einige Flags, welche die Ergebnisse bei Überlauf
beeinflussen können. Sind die bei Programmstart immer auf
bestimmte Werte gesetzt, oder muss man das selber setzen?
Gibt es da im Zusammenhang mit SSE/SSE2 zb beim
Wurzelziehen oder überall wo unerlaubte Dinge geschehen
können bestimmte Vorgehensweisen, die einzuhalten sind.
Nicht dass auf irgendwelchen Rechnern exceptions ausgelöst
werden, die man selber nie hat...

Gruß
Jens
 

Lesen sie die antworten

#1 Hubert Seidel
28/11/2008 - 20:40 | Warnen spam
Hallo Jens,

"Jens Dierks" schrieb im
Newsbeitrag news:49302b06$0$21658$

folgendes möchte ich nochmal etwas genauer wissen:
da die Register oft knapp werden, spielt man schon mal mit
dem Gedanken den ESP zu benutzen, wenn dieser in der



Mit diesem Gedanken würde ich nicht lange spielen... (dazu spàter)

eigentlichen Routine eh nicht benutzt wird. Nur so einfach
pushen und poppen geht halt nicht weil diese Funktionen
selber ESP als Speicherpunkt benutzen(?). Aber wenn man



Du kannst ESP im Daten- oder ggf. Code-Segment zwischenspeichern

mov [addr], esp
...
mov esp, [addr]

ESP in eine normale Variable, also relativ zu ebp abspeichert



das wàhre eine lokale Variable
Du kannst es aber auch als globale abspeichern.

und wieder ladet (und nicht callen muss), kann man wohl
dazwischen ESP auch "normal" benutzen(?).
Oder gibt es noch etwas zu beachten, anscheinend kann man
ESP auch nicht indiziert verwenden?



Es gibt zu beachten das ein Interrupt ausgelöst werden kann, und
dieser möchte den Rücksprung auf den Stack ablegen (wie auch immer).
Würdest Du mit ESP berechnungen durchführen, dann würde
der Wert von ESP quasi zwischenzeitlich in die Wüste zeigen.
Du müstest quasi vorher ein CLI, anschl. ein STI ausführen (dürfen).

mfg.
Herby

http://www.hubert-seidel.de

Ähnliche fragen