]> git.buserror.net Git - polintos/scott/priv.git/blob - doc/abi/x86
fixes/cleanup
[polintos/scott/priv.git] / doc / abi / x86
1 Basic ABI: SysV i386
2
3 Out-of-Process Method Invocation:
4    Caller:
5       eax: pointer to parameter info block (PIB)
6
7       Call the 32-bit address stored at 0x7fff0000 to invoke the method.
8       
9       Upon return:
10       ebx, esi, edi, ebp, esp: preserved
11       eax: pointer to exception, or NULL if none
12            If there is an exception, the user part of the syscall
13            function will search for an exception handling function
14            that covers the calling address.  If none is found,
15            it will assume that it is a language without exception
16            handling, and return the exception to the caller in eax.
17       edx: length of exception segment, if any
18       ecx: may be clobbered
19       
20    Callee:
21       eax: pointer to PIB
22       edx: pointer to caller information struct, or NULL if not
23            requested
24       esp: NULL.
25
26       Jump to the 32-bit address stored at 0x7fff0004 to return.
27       
28       Upon return:
29       eax: pointer to exception, or NULL if none
30       edx: length of exception segment, if any
31       ebx, esi, edi, ebp, esp: may be clobbered
32
33 Object registration:
34         eax: number of objects to register with initial refcount 1
35         edx: pointer to list of NewObject structs
36         
37         Call the 32-bit address stored at 0x7fff0008.
38         
39         Upon return:
40         eax: pointer to exception, or NULL if none
41         edx: length of exception segment, if any
42
43 GUID SHA-1 hash retrieval:
44         eax: object id
45         edx: 20-byte buffer
46         
47         Call the 32-bit address stored at 0x7fff000c.
48         
49         Upon return:
50         eax: pointer to exception, or NULL if none
51         edx: length of exception segment, if any