[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