AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Assemmbler] Aufrufkonvention erkennen
Thema durchsuchen
Ansicht
Themen-Optionen

[Assemmbler] Aufrufkonvention erkennen

Ein Thema von scp · begonnen am 24. Aug 2005 · letzter Beitrag vom 26. Aug 2005
 
Benutzerbild von BlackJack
BlackJack

Registriert seit: 2. Jul 2005
Ort: Coesfeld
246 Beiträge
 
Delphi 2005 Personal
 
#3

Re: [Assemmbler] Aufrufkonvention erkennen

  Alt 25. Aug 2005, 00:56
Zitat von Dax:
Die Parameterreihenfolge ist meinen Beobachtungen nach EAX-EDX-ECX-EBX-Top of Stack-Top of Stack-4, ... usw. Korrigiert mich, wenn ich falsch liege
das ist aber auch nur so wenn alle parameter (<(?))4 bytes gross sind und wenn es sich nicht um die Methode einer Klasse handelt, da dann in EBX der Self-Pointer gespeichert wäre.
allgemein kann man sich aber nicht darauf verlassen, wie Delphi die Parameter übergibt, da sozusagen der Compiler es selber entscheidet, wie es nun am besten ist. das gilt meines Wissens auch wenn man z.b. die Direktive "register" anhängt. (anders natürlich bei Direktiven a la "stdcall", "cdecl" etc., da bei diesen Aufrufkonventionen ja ausschliesslich der stack genutzt wird, und die direktiven zweifelsfrei angeben, wie und in welcher reihenfolge die parameter auf den stack gelegt werden müssen).

edit: das sagt die Delphi-Hilfe:
Zitat von Delphi-Hilfe:
Die Konvention register

Bei der Konvention register werden maximal drei Parameter in den CPU-Registern übergeben, der Rest im Stack. Die Parameter werden in der Reihenfolge ihrer Deklaration übergeben (wie bei der Konvention pascal). Die ersten drei geeigneten Parameter stehen in den Registern EAX, EDX und ECX (in dieser Reihenfolge). Nur reelle, variante und strukturierte Typen sowie Methodenzeiger- und Int64-Typen sind als Registerparameter ungeeignet. Sind mehr als drei mögliche Registerparameter vorhanden, werden die ersten drei in EAX, EDX und ECX übergeben. Die restlichen Parameter werden in der Reihenfolge ihrer Deklaration im Stack abgelegt.
und ich glaube wenn man keine Konvention angibt, verwendet Delphi (wenn möglich) implizit die register-Konvention.
See my shadow changing, stretching up and over me.
Soften this old armor. Hoping I can clear the way
By stepping through my shadow, coming out the other side.
Step into the shadow. Forty six and two are just ahead of me.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:51 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz