*Markus: (ASM) Wie spielen Stackpointer und Datengröße zusammen?

Beitrag lesen

Hallo,

Eines verstehe _ich_ nicht: Wozu legst du erst zwei Werte auf den Stack? Das erscheint mir völlig zweckfrei, und in diesem Fall unnötig. Da die beiden Werte nie wieder vom Stack abgeräumt werden, ist das genaugenommen sogar ein schwerwiegender Fehler, der nur deshalb keine Schutzverletzung (o.ä.) verursacht, weil das Programm danach sowieso beendet wird, ohne nochmal auf Werte von Stack (z.B. Rücksprungadressen) zurückzugreifen.

Das war auch nur ein Testbeispiel. Das Programm hat keinen tieferen Sinn. Bezüglich des Abräumens des Stacks hast du allerdings recht. Würde ich ein "add esp, 8" vor "pop eax, 1" schreiben, so würde das Programm m.M.n. "sauber" ausgeführt werden, falls ich das mit meinen Assembler-Newbiefähigkeiten richtig erkannt habe.

So isoliert erscheint mir dieses Code-Beispiel aber ziemlich sinnlos, vom vorher beschriebenen Stackfehler ganz abgesehen. Hast du das eventuell aus einem größeren Zusammenhang gerissen oder Teile herausgekürzt, ohne genau zu wissen, was du tust?

Nein, ich experimentiere nur ein wenig herum. Für das Schreiben eines Treibers reicht mein Wissen leider noch nicht aus. :)

Ich hoffe, du erkennst ihn jetzt.

Danke, jetzt ist es mir absolut klar.

--
http://www.apostrophitis.at
六 7東曲 人港ラ