[Oberon] Question on ORG.SaveRegs / ORG.RestoreRegs in the FPGA Oberon compiler
andreas_pirklbauer at yahoo.com
Tue Dec 18 22:21:11 CET 2018
> ...but ALSO for *regular* procedures, i.e. in ORP.StatSequence…
> But in this case, surely RH is 0 so no registers are saved? Maybe the
> apparent asymmetry comes from having to handle procedure variables too.
That’s indeed the reason: when one calls a procedure variable, e.g. V.handle in
Viewers, then dereferencing V to get to V.handle in ORP.selector/ ORG.DeRef
will use up an additional register, so RH = 1 in PrepCall.
But still, shouldn’t this register be somehow accounted for ?
Perhaps with the second of the following lines in ORG.Call:
IF x.mode <= ORB.Par THEN load(x); DEC(RH)
ELSE Put2(Ldr, RH, SP, 0); Put1(Add, SP, SP, 4); DEC(r); DEC(frame, 4) <---
I just haven’t investigated yet..
More information about the Oberon