Contents | < Browse | Browse >

#-------------------------------------------------------------------#
|  Target Details                                                   |
#-------------------------------------------------------------------#

- 68k binaries -

   o Register usage:

      D0-D2   : return values [scratch]
      D3      : local scratch (callee save for compatibility)
      D4-D7   : register-variables [save]
      A0-A3   : scratch
      A4      : global pointer
      A5      : frame pointer
      A6      : librarybases [scratch]
      A7      : stack pointer

      F0 - F7 : floating point scratch
      F1 - F7 : double parameters


   o Internal functions:

     Thanks to Wouter for letting me use the internal functions of the EC compiler.

- PPC binaries -

   o A lot of the smaller internal functions are permanently put inline.
     Inlined functions:
        Char(), Int(), Long(), PutChar(), PutInt(), PutLong(), ListItem(),
        ListLen(), EstrLen(), StrMax(), ListMax(), SetStr(), SetList(),
        ObjSize(), ObjName(), Shr(), Shl(), Not(), Or(), Eor(), And(),
        Odd(), Even(), Link(), Next(), Eval(), Mul(), Div(), Car(), Cdr(),
        Double(), PutDouble(), Ptr(), PutPtr(), Real(), PutReal(), Float(),
        PutFloat(), Word(), PutWord(), Byte(), PutByte(), Fabs()

   o Functions/procedures takes their arguments in registers (r3..r10).

   o Additional parameters to functions and procedures (>8 params)
     are passed on the stack. "self" is passed in R12.

   o Register usage is following: (SysV / MorphOS)

     R0        : scratch
     R1        : stack pointer
     R2        : reserved for system
     R3  - R5  : return-values [scratch]
     R3  - R10 : parameters to functions and procedures [scratch]
     R11,  R12 : scratch
     R13       : global environment pointer
     R14 - R19 : save
     R20 - R31 : register variables [save]

     F0  - F13 : scratch
     F1  - F8  : floating point parameters to functions and procedures [scratch]
     F1  - F4  : floating point return values [scratch]
     F14 - F19 : save
     F20 - F31 : floating point register variables [save]

     V0  - V19 : vector scratch
     V2  - V13 : vector parameters to functions and procedures [scratch]
     V2  - V5  : vector return values [scratch]
     V20 - V31 : vector register variables [save]


- 68k and ppc binaries -

   String(), List(), DisposeLink() functions now uses a private
   exec/memorypool. This makes allocation faster, deallocation and
   end_of_program_auto_allocation much faster. You also save 4 bytes
   for each string/list. It also means runtime memlist gets less
   cluttered so Dispose() function may get much faster too.