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