Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Assemmbler] Aufrufkonvention erkennen (https://www.delphipraxis.net/52170-%5Bassemmbler%5D-aufrufkonvention-erkennen.html)

Olli 25. Aug 2005 13:11

Re: [Assemmbler] Aufrufkonvention erkennen
 
Zitat:

Zitat von jbg
Zitat:

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.

Das Zitat war von mir. Und den Hinweis auf's Debuggen hatte ich drin, weil es Leute gibt, die mir gegenüber anderes behaupteten, ich dies aber nicht verifizieren konnte.

Zitat:

Zitat von jbg
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:

Komisch, genau dabei kam bei mir bereits schonmal Mist raus. Lag aber vielleicht an anderen Umständen. Das muß ich direkt nochmal intensiver testen.

scp 25. Aug 2005 16:01

Re: [Assemmbler] Aufrufkonvention erkennen
 
Scheint ein interessantes Thema zu sein :-)

Habe mittlerweile die Anzahl mittels "Neuron PE Disassembler" rausgefunden: Es sind 14 (!) DWORD bzw. Pointer-Parameter.

PS: Es handelt sich um eine VC DLL, nur der Aufruf erfolgt jetzt über Delphi.

Olli 25. Aug 2005 17:35

Re: [Assemmbler] Aufrufkonvention erkennen
 
Zitat:

Zitat von scp
Habe mittlerweile die Anzahl mittels "Neuron PE Disassembler" rausgefunden: Es sind 14 (!) DWORD bzw. Pointer-Parameter.

Kostenlose Alternative: http://www.datarescue.be/idafreeware/freeida43.exe

Wenn noch was in Sachen RE ist, haste ja meine Mailadresse ;)

BlackJack 25. Aug 2005 20:22

Re: [Assemmbler] Aufrufkonvention erkennen
 
Zitat:

Zitat von scp
PS: Es handelt sich um eine VC DLL, nur der Aufruf erfolgt jetzt über Delphi.

ich glaube zum aufrufen von DLL-funktionen benutzt man die cdecl-Konvention.

scp 25. Aug 2005 20:49

Re: [Assemmbler] Aufrufkonvention erkennen
 
Nö, auch das weis der Disassembler, es ist stdcall und klappt auch.

Olli 25. Aug 2005 20:50

Re: [Assemmbler] Aufrufkonvention erkennen
 
Zitat:

Zitat von BlackJack
ich glaube zum aufrufen von DLL-funktionen benutzt man die cdecl-Konvention.

Üblicherweise benutzt man die Aufrufkonvention, die auch die DLL benutzt :zwinker:
Und das hängt nunmal wirklich von der DLL ab. Fastcall ist mir auch schon begegnet, Cdecl ebenfalls, aber am häufigsten sind immernoch Stdcall und Safecall.

BlackJack 26. Aug 2005 01:12

Re: [Assemmbler] Aufrufkonvention erkennen
 
naja das man auch in DLLs die konvention frei wähöen kann ist ja eigentlich klar, nur dachte ich, dass sich da als Quasi-Standard die cdecl etabliert hätte.

p.s.: wie war das noch: bei cdecl muss der aufrufer nachher selber den stack aufräumen, oder?

Olli 26. Aug 2005 09:55

Re: [Assemmbler] Aufrufkonvention erkennen
 
Zitat:

Zitat von BlackJack
dachte ich, dass sich da als Quasi-Standard die cdecl etabliert hätte.

Wer auf Kompatibilität setzt, benutzt stdcall. Das beherrschen so ziemlich alle Sprachen (sogar VB - übrigens für VB die einzige Aufrufkonvention!).

Zitat:

Zitat von BlackJack
bei cdecl muss der aufrufer nachher selber den stack aufräumen, oder?

Korrekt. Sonst macht dies immer der Aufgerufene.


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:58 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz