The following rules apply to the CDECL calling convention:
- All parameters are passed on the stack.
- The parameters are pushed onto the stack in a lexical right-to-left
order.
- The calling function removes the parameters
from the stack.
- Floating point values are returned in ST(0). All functions returning non-floating point values return
them in EAX, except for the special case of returning aggregates less
than or equal to eight bytes in size. For functions that return aggregates
less than or equal to four bytes in size, the values are returned
as follows:
- Size of Aggregate
- Value Returned in
- 8 bytes
- EAX-EDX pair
- 5, 6, 7 bytes
- EAX The address to place return values is passed as a hidden
parameter in EAX.
- 4 bytes
- EAX
- 3 bytes
- EAX The address to place return values is passed as a hidden
parameter to EAX.
- 2 bytes
- AX
- 1 byte
- AL
For functions that return aggregates 5, 6, 7 or more than 8 bytes
in size, the address to place the return values is passed as a hidden
parameter, and the address is passed back in EAX.
- Function names are decorated with an underscore prefix when
they appear in object modules. For example, a function named fred in the source program will appear as _fred in the object.
When building export or import lists in .DEF files, the decorated version of the name should be used.
If you used undecorated names in the DEF file, you must give the object
files to ILIB along with the DEF file. ILIB uses the object files
to determine how each name ended up after decoration.
|
This information center is powered by Eclipse technology. (http://www.eclipse.org)