Home

oproepconventies

Oproepconventies, in het Engels calling conventions, zijn regels die bepalen hoe een functieoproep in een programma wordt uitgevoerd. Ze specificeren hoe argumenten worden doorgegeven (in registers of op de stack), in welke volgorde ze worden gepasseerd, wie de stack opruimt na de oproep, hoe een return-waarde wordt teruggegeven en hoe functienamen worden versierd voor linking. Het doel is een eenduidige interface tussen caller en callee zodat code van verschillende modules of talen met elkaar kan samenwerken.

Belangrijke aspecten zijn de wijze van parameteroverdracht (registers versus stack), de cleanup-regels (wie de stack opruimt)

Interoperabiliteit vereist dat beide partijen dezelfde calling convention gebruiken; een mismatch kan leiden tot crashes of

en
de
methode
van
teruggeven
van
waarden
(via
registers
of
geheugen).
Verschillende
conventies
bestaan
per
platform
en
per
ABI.
Voorbeelden
die
je
vaak
tegenkomt
zijn
cdecl,
stdcall,
thiscall
en
fastcall.
Op
Windows
komen
ook
varianten
zoals
msfastcall
voor.
Op
Linux-
en
macOS-systemen
zijn
conventies
meestal
vastgelegd
door
de
respectievelijke
ABIs,
zoals
System
V
voor
64-bit
systemen,
waardoor
portable
interop
afhankelijk
is
van
de
gekozen
conventie.
stackbeschadiging.
Conventies
vormen
een
onderdeel
van
de
ABI
en
bepalen
binary
compatibiliteit
tussen
modules
en
talen,
wat
vooral
relevant
is
bij
het
maken
van
bindings,
FFI
en
het
linken
van
bibliotheken.