[Oberon] ARM Oberon Code Generation (was PO.Computer documentation)
Chris Burrows
chris at cfbsoftware.com
Sat Apr 26 06:45:06 CEST 2014
> -----Original Message-----
> From: eas lab [mailto:lab.eas at gmail.com]
> Sent: Saturday, 26 April 2014 12:41 PM
> To: chris at cfbsoftware.com; ETH Oberon and related systems
> Subject: Re: [Oberon] ARM Oberon Code (was: PO.Computer documentation)
> ...
> can you confirm IF the following bytes match the source:
> ...
> Out.Real(a*b, 12); Out.Ln;
> ...
> eb 00 01 04 BL 468H
> eb 00 01 08 BL 47cH
>
> ?BL sounds like branchOnLess; but HelloWorld has no decisions?
>
BL is 'Branch with Link' (BLT is 'Branch Less Than').
BL is the ARM instruction used to call a procedure. There are two BL instructions for the above snippet - one for each call to an 'Out' procedure.
A list of these instructions is in the 'ARM and Thumb-2 Instruction Set Quick Reference Card' which you can download from:
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.qrc0001m/index.html
Detailed explanations of the ARM code sequences that are generated by Oberon-07 statements are included in Niklaus Wirth's 2007 paper: 'An Oberon Compiler for the ARM Processor'. You can download a copy of that document from:
http://www.inf.ethz.ch/personal/wirth/Oberon/index.html
NOTE: The document describes Wirth's ARM Oberon-07 compiler that was the immediate predecessor to his FPGA RISC compiler used in Project Oberon. There will be some differences from the instruction sequences generated by the ARM Oberon-2 compiler (a port of Regis Crelier's OP2 compiler?) that you are running on the Raspberry Pi.
Regards,
Chris Burrows
CFB Software
http://www.astrobe.com
More information about the Oberon
mailing list