[Oberon] Numerical CASE Statements in Project Oberon
Chris Burrows
chris at cfbsoftware.com
Sun Oct 23 05:46:30 CEST 2016
> -----Original Message-----
> From: Chris Burrows [mailto:chris at cfbsoftware.com]
> Sent: Saturday, 7 November 2015 11:33 PM
> To: ETH Oberon and related systems (oberon at lists.inf.ethz.ch)
> Subject: Numerical CASE Statements in Project Oberon (was: [Oberon]
> RISC.img)
>
> >
> > From: Oberon [mailto:oberon-bounces at lists.inf.ethz.ch] On Behalf Of
> > Jan de Kruyf
> > Sent: Friday, 6 November 2015 8:37 PM
> > To: Paul Reed; ETH Oberon and related systems
> > Subject: Re: [Oberon] RISC.img
> >
> > 2. Question:
> > I see that the 'numerical' CASE implementation is missing in
> ORP.Mod,
> > although it is in the language spec and although we might
> reasonably
> > expect people to port programs from O2 to O7.
> >
> > Would it be in the interest of the community for me to try and
> > implement that part, at least for constant labels?
> >
>
> Don't even think about implementing it unless you are planning to do
> it properly - a half-baked solution would be worse than none. e.g. I
> would expect a complete solution to include the implementation of a
> RISC6 (or RISC5.1 maybe?) processor which has indexed-branch
> statements.
>
I have now implemented a numerical CASE statement in Astrobe for Embedded Project Oberon for compatibility with the Oberon compiler used in Astrobe for the ARM-Cortex targets.
I was wrong about the RISC5 processor instruction set. It does not need any additional instructions in order to be able to implement an efficient branch table-driven numerical CASE statement. It already has a branch instruction that sets the address of the next instruction to be the value of a register. The index into the jump table can be computed and stored in that register.
Apologies for any confusion,
Regards,
Chris
Chris Burrows
CFB Software
http://www.astrobe.com/RISC5
More information about the Oberon
mailing list