Heim > Backend-Entwicklung > C++ > Wie beeinflussen Aufrufkonventionen die Übergabe von Funktionsargumenten in C/C?

Wie beeinflussen Aufrufkonventionen die Übergabe von Funktionsargumenten in C/C?

DDD
Freigeben: 2024-11-12 07:34:02
Original
1022 Leute haben es durchsucht

How Do Calling Conventions Shape Function Argument Passing in C/C  ?

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage