[Oberon] ARM Oberon Code Generation (was PO.Computer documentation)
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:
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:
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.
More information about the Oberon