[Oberon] PO2013 compiler and SET operations

Hellwig Geisse hellwig.geisse at mni.thm.de
Thu Jul 30 10:39:49 CEST 2020


On Do, 2020-07-30 at 07:05 +0200, Jörg wrote:
>  
> I think ORG.Set*(VAR x, y: Item) is the culprit.
>  
> Currently, in the end it is
>      IF x.mode = ORB.Const THEN
>         IF x.a # 0 THEN Put1(Xor, y.r, y.r, -1); Put1a(And, RH-1, y.r, x.a) END ;
>         x.mode := Reg; x.r := RH-1
>       ELSE DEC(RH); Put0(Ann, RH-1, x.r, y.r)
>       END
>  
> But is should be
>      IF x.mode = ORB.Const THEN
>         IF x.a # 0 THEN Put1(Xor, y.r, y.r, -1); Put1a(And, RH-1, y.r, x.a) END ;
>         x.mode := Reg;
>       ELSE DEC(RH); Put0(Ann, RH-1, x.r, y.r)
>       END;
>       x.r := RH-1
>  

That's it - thanks a lot!

Hellwig


More information about the Oberon mailing list