]> git.buserror.net Git - polintos/scott/priv.git/blob - doc/abi/x86
Document new memory management semantics.
[polintos/scott/priv.git] / doc / abi / x86
1 Basic ABI: SysV i386
2
3 Out-of-Process Method Invocation:
4    Caller:
5       eax: reserved, must be zero
6       edx: pointer to parameter info block (PIB)
7       ecx: maximum "out" bytes, excluding Inlines
8
9       Call the 32-bit address stored at 0x7fff0000 to invoke the method.
10       
11       Upon return:
12       ebx, esi, edi, ebp, esp: preserved
13       eax: pointer to exception, or NULL if none.
14            If there is an exception, the user part of the syscall
15            function will search for an exception handling function
16            that covers the calling address.  If none is found,
17            it will assume that it is a language without exception
18            handling, and return the exception to the caller in eax.
19       ecx: clobbered
20       edx: pointer to args, with out params filled in; in params
21            may be clobbered.  This will be the same pointer as
22            was passed in by the caller.
23       
24    Callee:
25       eax: pointer to PIB
26       edx: pointer to caller information struct, if such was
27            requested
28       ecx: return address
29       
30       Upon return:
31       
32       eax: pointer to exception, or NULL if none.
33       ebx, esi, edi, ebp, esp: should be preserved
34       ecx, edx: may be clobbered