[Oberon] Bit manipulation in Oberon-07
Jörg
joerg.straube at iaeth.ch
Sun Nov 4 08:39:50 CET 2018
Walter
>> MOD/DIV are just other words for AND/ASR
I forgot to mention two important conditions, so my statement is really true:
A) the divisor has to be a power of two
B) the divisor has to be constant expression.
If one of these conditions is not met, the complier generates a division instead of AND/ASR.
For bit (or subfield) manipulations Oberon-07 offers different means
1) SET: *, -, +, /, INCL, EXCL, IN
2) LSL, ASR, ROR, ODD, SYSTEM.BIT (SYSTEM depends on your compiler)
3) DIV, MOD (with the conditions above)
4) PACK, UNPK bit manipulations on REALs
Jörg
> Am 30.10.2018 um 01:14 schrieb Walter Gallegos <waltergallegos at vera.com.uy>:
>
>
>> ...MOD/DIV are just other words for AND/ASR...
>>
> All times I use SET when working with hardware registers; so, I was curious about the generated code for MOD/DIV alternative
>
>
> A simple test for extracting some bits from a 16 bits value
>
> a := 2345H;
> b := a DIV 100H MOD 7;
>
> Generate :
>
> 10 40002345 MOV R0 R0 9029
> 11 A0D00000 STR R0 SB 0
> 12 80D00000 LDR R0 SB 0
> 13 40020008 ASR R0 R0 8
> 14 400B0007 DIV R0 R0 7
> 15 20000000 MOV' R0 R0 R0
> 16 A0D00004 STR R0 SB 4
>
> I forget something ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.inf.ethz.ch/pipermail/oberon/attachments/20181104/a985d585/attachment.html>
More information about the Oberon
mailing list