Einzelnen Beitrag anzeigen

jbg

Registriert seit: 12. Jun 2002
3.483 Beiträge
 
Delphi 10.1 Berlin Professional
 
#9

Re: [Assemmbler] Aufrufkonvention erkennen

  Alt 25. Aug 2005, 11:44
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.
  Mit Zitat antworten Zitat