]> git.buserror.net Git - polintos/scott/priv.git/blobdiff - doc/abi/x86
Document new memory management semantics.
[polintos/scott/priv.git] / doc / abi / x86
index 2038cd50b1b42aad48f2793d5decac698168e462..41f4bb43269ae23594c0a335bb9cb0d5d25be089 100644 (file)
@@ -1,12 +1,10 @@
-Function Calls and In-Process Method Invocation:
-   SysV i386 ABI
+Basic ABI: SysV i386
 
 Out-of-Process Method Invocation:
    Caller:
-      eax: object ID
-      ecx: method ID
-
-      edx: pointer to parameter info block (PIB), described below
+      eax: reserved, must be zero
+      edx: pointer to parameter info block (PIB)
+      ecx: maximum "out" bytes, excluding Inlines
 
       Call the 32-bit address stored at 0x7fff0000 to invoke the method.
       
@@ -24,37 +22,13 @@ Out-of-Process Method Invocation:
            was passed in by the caller.
       
    Callee:
-      params on stack (low addr to high), ids replaced with pointers,
-      at least 4 bytes of spare space beyond the high element
-
-      eax: object pointer
+      eax: pointer to PIB
       edx: pointer to caller information struct, if such was
            requested
       ecx: return address
       
       Upon return:
       
-      params on stack (low addr to high), in params may be clobbered
       eax: pointer to exception, or NULL if none.
       ebx, esi, edi, ebp, esp: should be preserved
       ecx, edx: may be clobbered
-
-Stack:
-   esp is stack pointer, grows down, decrement before store
-      
-Object structure:
-   The object ID is stored as a 32-bit quantity at an offset
-   specified by calling a method TBD.
-
-Wrapper object creation:
-       The function to create wrapper objects is specified by calling a method
-   TBD.  The function shall conform to the local ABI, and takes an ID as a
-   32-bit integer as the first parameter, and a pointer to the class as
-   the second. It returns a pointer.
-   
-   Wrapper objects may be preemptively declared to avoid infinite loops by
-   calling a method TBD.
-
-Struct padding:
-   All fields are padded so that basic types are naturally aligned.
-