Aufrufkonventionen in C/C verstehen
Aufrufkonventionen definieren, wie Funktionen Argumente und ihre Werte übergeben und empfangen. C/C bietet verschiedene Anrufkonventionen, die jeweils einem bestimmten Zweck dienen.
Anzahl der Anrufkonventionen
In C/C sind mehrere Anrufkonventionen verfügbar. einschließlich:
- cdecl
- syscall
- pascal
- stdcall
- fastcall
- vectorcall
- safecall
- Microsoft X64 Aufrufkonvention
Bedeutung jeder Konvention
cdecl:
- Auf dem Stapel übergebene Argumente.
- Register sind für bestimmte Zwecke bestimmt (EAX für Rückgabewert, EAX, ECX, EDX). für vom Anrufer gespeichert).
syscall:
- Ähnlich wie cdecl, behält jedoch keine bestimmten Register bei.
Pascal:
- Parameter, die an übergeben werden Stapel in der Reihenfolge von links nach rechts.
- Angerufener ist für die Stapelbereinigung verantwortlich.
Standardaufruf:
- Angerufener räumt auf der Stapel.
- Parameter werden in der Reihenfolge von rechts nach links verschoben, z cdecl.
- Register, die für die interne Funktionsverwendung vorgesehen sind (EAX, ECX, EDX).
Fastcall:
- Die ersten beiden In Registern (ECX und EDX) übergebene Argumente.
- Verbleibende Argumente werden auf den Stapel verschoben von rechts nach links.
Vektoraufruf:
- Unterstützt die Übergabe von Vektorargumenten mithilfe von SIMD-Registern.
- Bis zu sechs Register für Vektorargumente reserviert.
safecall (Delphi/Free Pascal):
- Kapselt die COM-Fehlerbehandlung.
- Ausnahmen werden in EAX als HRESULT zurückgegeben, während das Ergebnis als Referenz übergeben wird.
Microsoft X64-Aufrufkonvention:
- Verwendet in Windows und vor dem Booten von UEFI.
- Die ersten vier Ganzzahl-/Zeigerargumente werden in Registern (RCX, RDX, R8, R9) übergeben.
Das obige ist der detaillierte Inhalt vonWie beeinflussen Aufrufkonventionen die Übergabe von Funktionsargumenten in C/C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!