AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |
Back to Blog
Microsoft abi inform9/24/2023 This convention simplifies support for unprototyped C-language functions and vararg C/C++ functions. The caller must always allocate sufficient space to store four register parameters, even if the callee doesn't take that many parameters. The caller is responsible for allocating space for the callee's parameters. Register usage is documented in detail in 圆4 register usage and Caller/callee saved registers.įor prototyped functions, all arguments are converted to the expected callee types before passing. These registers, and RAX, R10, R11, XMM4, and XMM5, are considered volatile, or potentially changed by a callee on return. Parameter passing is described in detail in Parameter passing. 16-byte arguments are passed by reference. Floating point arguments are passed in XMM0L, XMM1L, XMM2L, and XMM3L. Integer arguments are passed in registers RCX, RDX, R8, and R9. All floating point operations are done using the 16 XMM registers. It may be used by the callee, but consider it volatile across function calls. A single argument is never spread across multiple registers. Any argument that doesn't fit in 8 bytes, or isn't 1, 2, 4, or 8 bytes, must be passed by reference. There's a strict one-to-one correspondence between a function call's arguments and the registers used for those arguments. Space is allocated on the call stack as a shadow store for callees to save those registers. The 圆4 Application Binary Interface (ABI) uses a four-register fast-call calling convention by default. This section describes the standard processes and conventions that one function (the caller) uses to make calls into another function (the callee) in 圆4 code.įor more information on the _vectorcall calling convention, see _vectorcall.
0 Comments
Read More
Leave a Reply. |