stem/CS/Calling Conventions.md
andy 4cc2e79866 vault backup: 2023-05-31 22:21:56
Affected files:
.obsidian/global-search.json
.obsidian/workspace.json
Health/Alexithymia.md
Health/BWS.md
STEM/AI/Neural Networks/Activation Functions.md
STEM/AI/Neural Networks/Architectures.md
STEM/AI/Neural Networks/CNN/CNN.md
STEM/AI/Neural Networks/MLP/Back-Propagation.md
STEM/AI/Neural Networks/Transformers/Attention.md
STEM/CS/Calling Conventions.md
STEM/CS/Languages/Assembly.md
2023-05-31 22:21:56 +01:00

1.2 KiB

  • The order in which atomic (scalar) parameters, or individual parts of a complex parameter, are allocated
  • How parameters are passed
    • Pushed on the stack, placed in registers, or a mix of both
  • Which registers the called function must preserve for the caller
    • Also known as: callee-saved registers or non-volatile registers
  • How the task of preparing the stack for, and restoring after, a function call is divided between the caller and the callee

Subtle differences between Compilers, can be difficult to interface codes from different compilers

Calling conventions, type representations, and name mangling are all part of what is known as an application binary interface (ABI)

cdecl

C declaration

  • Originally from Microsoft's C compiler
  • Subroutine arguments passed on the stack
  • Function arguments pushed right-to-left
    • Last pushed first
  • Caller cleans stack after function call returns

stdcall

  • Variation on Pascal calling convention
  • Callee cleans stack
  • Params pushed onto stack right-to-left
    • Same as cdecl
  • Standard for Microsoft Win32 API