Skip to content

Latest commit

 

History

History
65 lines (56 loc) · 2.39 KB

TARGDETAILS.md

File metadata and controls

65 lines (56 loc) · 2.39 KB

Target Details

68k binaries

  • 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
    
  • Internal functions: Thanks to Wouter for letting me use the internal functions of the EC compiler.

PPC binaries

  • 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()

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

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

  • 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.