[Oberon] O-7 code generation
Jan de Kruyf
jan.de.kruyf at gmail.com
Mon Nov 23 18:19:42 CET 2015
Ok,
I did find the answer:
It gets patched in Modules.Load
j.
On Mon, Nov 23, 2015 at 5:24 PM, Jan de Kruyf <jan.de.kruyf at gmail.com>
wrote:
> Hallo,
>
> I stumbled onto something I do not understand, but perhaps there is a
> compiler specialist.
>
> Here it is:
> MODULE Test1;
> VAR t : INTEGER;
> BEGIN
> t := 9;
> END Test1.
>
>
> code
> 0 4EE90004 SUB SP SP 4
> 1 AFE00000 STR LNK SP 0
> 2 40000009 MOV R0 R0 9
> 3 8D000003 LDR SB R0 3
> 4 A0D00000 STR R0 SB 0
> 5 8FE00000 LDR LNK SP 0
> 6 4EE80004 ADD SP SP 4
> 7 C700000F B LNK
>
>
> So I assign '9' to 'local' global variable 't'.
>
> In line 2 constant 9 is moved into R0
> in line 3 SB is loaded with the data from [R0 + 3]
> in line 4 R0 is stored in [SB + 3]
>
> So R0 is overwritten, unless this is patched by the module loader.
>
> But the book says that line 3 was designed to read:
>
> LDR SB R12 3 ;(section 12.7.9 -- 2nd last paragraph)
>
>
> Does anyone know what is up here?
>
> Thanks,
>
> j.
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20151123/fd2bbd23/attachment.html>
More information about the Oberon
mailing list