Uri Guttman <[EMAIL PROTECTED]> writes:
>
>think of this as classic CISC code generation with plenty of registers
>and a scratch stack. this is stable technology. we could even find a
>code generator guru (i don't know any obvious ones in the perl6 world)
Classic CISC code generation taught "us" that CISC is a pain to code-gen.
(I am not a Guru but did design TMS320C80's RISC specifically to match
gcc of that vintage, and dabbled in a p-code for Pascal way back.)
>
> >> special registers ($_, @_, events, etc.) are indexed with a starting
> >> offset of 64, so general registers are 0-63.
>
> DS> I'd name them specially (S0-Snnn) rather than make them a chunk of the
> DS> normal register set.
All that dividing registers into sub-classes does it cause you to do
register-register moves when things are in the wrong sort of register.
Its only real benefit is for encoding density as you can "imply" part
of the register number by requiring addresses to be in address registers
etc. It is not clear to me that perl special variables map well to that.
Mind you the names are just a human thing - it is the bit-pattern that
compiler cares about.
>
>oh, they have macro names which are special. something like:
>
>#define MAX_PLAIN REG 64 /* 0 - 63 are plain regs */
>#define REG_ARG 64 /* $_ */
>#define REG_SUB_ARG 65 /* @_ */
>#define REG_ARGV 66 /* @ARGV */
>#define REG_INT1 67 /* integer 1 */
>#define REG_INT2 68 /* integer 1 */
>
>uri
--
Nick Ing-Simmons
who is looking for a new job see http://www.ni-s.u-net.com/