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.