004
20.03.2005, 16:14 Uhr
(un)wissender
Niveauwart
|
Tja, man ist immer schnell dabei anderen den Fehler unterzuschieben. Also, das Problem war, dass ich die Register EBX und EDX verwechselt habe. Es gibt so genannte scratch register, also Register die eine Funktion überschreiben darf ohne sie wieder herstellen zu müssen ( EAX, ECX, EDX, ST(0)-ST(7), XMM0-XMM7 ). Nun gehört aber EBX halt nicht dazu und das habe ich überschreiben. DEr Vc++ zählt diese auch zu den scratch registern, der gcc hält sich aber an den Standard und zählt es nicht dazu. Beim gcc 3.2 hat es wohl durch Zufall funktioniert. Zum zweiten Punkt: der gcc hält es mit stdcall etwas anders, aber trotzdem durchaus standardkonform. War also alles mein Fehler. -- Wer früher stirbt ist länger tot. |