Calling conventions used in x86 architecture programming
This article has multiple issues. Please help improve it or discuss these issues on the talk page. (Learn how and when to remove these template messages)
This article includes a list of general references, but it lacks sufficient corresponding inline citations. Please help to improve this article by introducing more precise citations.(February 2008) (Learn how and when to remove this message)
This article has an unclear citation style. The references used may be made clearer with a different or consistent style of citation and footnoting.(February 2015) (Learn how and when to remove this message)
(Learn how and when to remove this message)
This article describes the calling conventions used when programming x86 architecture microprocessors.
Calling conventions describe the interface of called code:
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
This is intimately related with the assignment of sizes and formats to programming-language types.
Another closely related topic is name mangling, which determines how symbol names in the code are mapped to symbol names used by the linker. Calling conventions, type representations, and name mangling are all part of what is known as an application binary interface (ABI).
There are subtle differences in how various compilers implement these conventions, so it is often difficult to interface code which is compiled by different compilers. On the other hand, conventions which are used as an API standard (such as stdcall) are very uniformly implemented.
and 25 Related for: X86 calling conventions information
This article describes the callingconventions used when programming x86 architecture microprocessors. Callingconventions describe the interface of called...
code-size, many x86callingconventions pass arguments on the stack. The return value (or a pointer to it) is returned in a register. Some conventions use registers...
callingconvention, which determines how data is provided as input to, or read as output from, computational routines. Examples of this are the x86 calling...
The x86 instruction set refers to the set of instructions that x86-compatible microprocessors support. The instructions are usually part of an executable...
x86 assembly language is the name for the family of assembly languages which provide some level of backward compatibility with CPUs back to the Intel...
FLT_EVAL_METHOD. On the x86 architecture, most C compilers implement long double as the 80-bit extended precision type supported by x86 hardware (generally...
(either the full one, or the one which uses enter). Under certain callingconventions it is the callee's responsibility to clean the arguments off the...
Linux system calls – system calls for Linux kernel 2.2, with IA-32 callingconventions How System Calls Work on Linux/i86 (1996, based on the 1993 0.99...
Ordering Stack Alignment in 64-bit CallingConventions - discusses stack alignment for x86-64 callingconventions The Lost Art of Structure Packing by...
source operating system following VMS conventions. FreeVMS was built on top of the L4 microkernel and supported the x86-64 architecture. Prior work investigating...
calling convention passes a pointer to the calling class instance (commonly referred to as a "this" pointer) via the ECX register (on the x86 architecture)...
misused. Counting the number of arguments is often made easy on x86 due to a callingconvention where the caller removes the arguments that were pushed onto...
Retrieved 2017-09-03. [1] (NB. Has details on the DOS COM program callingconventions.) Lunt, Benjamin "Ben" D. (2020). "DOS .COM startup registers". Forever...
thunks) A dll that allows 32-bit x86 instructions to be executed, which varies by instruction set architecture. On x86-64, Wow64cpu.dll takes care of switching...
processor used in the original IBM PC design. The 8086 gave rise to the x86 architecture, which eventually became Intel's most successful line of processors...
Windows (XP, 2003, Vista), there are also %ProgramFiles(x86)%, which defaults to "C:\Program Files (x86)", and %ProgramW6432%, which defaults to "C:\Program...
than the x86-64 version. On average, x32 is 5–8% faster on the SPEC CPU integer benchmarks compared to x86-64. There is no speed advantage over x86-64 in...
Mode) of the x86 CPU, so programs that call BIOS either must also run in real mode or must switch from protected mode to real mode before calling BIOS and...
Language 1.0 Callingconventions for different C++ compilers by Agner Fog contains detailed description of name mangling schemes for various x86 and x64 C++...
shorthand for BIOS interrupt call 13hex, the 20th interrupt vector in an x86-based (IBM PC-descended) computer system. The BIOS typically sets up a real...
and SSE, and Motorola Altivec instruction sets. Access to special callingconventions not yet supported by the compiler. System calls and interrupts: High-level...
program function locations, function stack frames, and function callingconventions reconstructed data types However, the nature of disassembly precludes...
LLVM-2.9 and GCC4.6.1 on x86". Retrieved October 3, 2011. Makarov, V. "SPEC2000: Comparison of LLVM-2.9 and GCC4.6.1 on x86_64". Retrieved October 3,...
in early 1995, for the Motorola 68000 family based NeXT computers, Intel x86, Sun SPARC, and HP PA-RISC-based systems. NeXT separated the underlying operating...
environments. On Windows NT operating systems, PE currently supports the IA-32, x86-64 (AMD64/Intel 64), IA-64, ARM and ARM64 instruction set architectures (ISAs)...