Zitat von
BlackJack:
Aber Delphi benutzt *immer* implizit Register wenn es nicht debuggt
Auch dort wird
register als Aufrufkonvention benutzt, wenn nichts anderes erzwungen wird.
Zitat:
tja, aber das war zum meiner Anfansgzeit in Delphi, da kam ich gerade von
TP rüber und war froh, verstanden zu haben, wie
TP die Parameter auf den Stack legt und wie man die dann mit
ASM adressieren kann.
Für sowas sollte man dann halt in die System.pas schauen. Mehr Beispiele gibt es dafür nicht :mgreen:
Zitat:
und ich habe mir erstmal schön die Parameter in den Registern EAX / ECX / EDX überschrieben
Warum so umständlich? Du kannst doch die Namen der Parameter benutzen. Wobei die ersten drei 32-Bit Parameter dann durch ihre Registernamen ersetzt werden, was wiederum zu Fehlern führen kann:
(Warnung: Fehlerhafte code)
Delphi-Quellcode:
procedure DoSomething(a, b, c: Integer);
asm
mov eax, b
mov edx, a
mov ecx, c
end;
Was kommt da wohl raus?
Code:
mov eax, edx
mov edx, eax
mov ecx, ecx
ret
Und das ist Müll.