[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [f-cpu] calling conventions
> There is another point else which I would enlight : what about the ability to
> use a pair of registers to have 128 bit when 64 bits is default ? especially
> for such opcodes which use or return a pair of register (Rn,Rn^1) ? not very
> good if the first parameter or return register starts from r1. Worse, what
can
> happen if we use an OPCODE which uses or computes a pair of register
(Rn,Rn^1),
> especially when Rn == R1 ? Rn^1 would be R0, but R0 is hardwired to 0 !
Another proposal :
r0 : zero
r1 : pointer to variable or additional function arguments
(call-clobbered)
r2-r15 : function return values or arguments (call-clobbered)
r16-r31 : temporary registers (call-clobbered)
r32-r47 : local registers (callee-saver)
r48-r63 : global or special registers
that way we could handle pair of registers much smarter
(r2-r3,r3-r4,...,r14,r15).
personally, I'm wondering if it is really necessary to limit function argument
to r15 instead of r31 or r29 (to be sure to have at least a pair of temporary
registers), in so far as we can consider that all function arguments not used
by a function may be used as temporary registers by this function...
*************************************************************
To unsubscribe, send an e-mail to majordomo@seul.org with
unsubscribe f-cpu in the body. http://f-cpu.seul.org/