Bitwise operations: Difference between revisions
Content added Content deleted
imported>KayproKid m (→{{header|S-BASIC}}: fixed tag glitch) |
(Add Uxntal implementation) |
||
Line 6,157: | Line 6,157: | ||
setMode("Base",oldbase) |
setMode("Base",oldbase) |
||
EndPrgm</syntaxhighlight> |
EndPrgm</syntaxhighlight> |
||
=={{header|Uxntal}}== |
|||
<syntaxhighlight lang="Uxntal"> |
|||
( bitwise-operations.tal ) |
|||
|00 @System [ &vector $2 &wst $1 &rst $1 &eaddr $2 &ecode $1 &pad $1 &r $2 &g $2 &b $2 &debug $1 &halt $1 ] |
|||
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 &error $1 ] |
|||
( program ) |
|||
|0100 @on-reset ( -> ) |
|||
#0a02 |
|||
DUP2 SWP ;Labels/a <print-arg> ;Labels/b <print-arg> |
|||
bitwise |
|||
halt |
|||
BRK |
|||
@bitwise ( a b -- ) |
|||
;Labels/not <print-str> ;Labels/a <print-str> ;Labels/equ <print-str> DUP2 [ POP #ff EOR ] <print-result> |
|||
;Labels/and <print-label> DUP2 [ AND ] <print-result> |
|||
;Labels/or <print-label> DUP2 [ ORA ] <print-result> |
|||
;Labels/xor <print-label> DUP2 [ EOR ] <print-result> |
|||
;Labels/shl <print-label> DUP2 [ #40 SFT SFT ] <print-result> |
|||
;Labels/shr <print-label> DUP2 [ SFT ] <print-result> |
|||
;Labels/rol <print-label> DUP2 [ #40 SFT #00 ROT ROT SFT2 ORA ] <print-result> |
|||
;Labels/ror <print-label> DUP2 [ SWP #00 ROT SFT2 ORA ] <print-result> |
|||
JMP2r |
|||
@halt ( -- ) |
|||
#01 .System DEO |
|||
JMP2r |
|||
@<print-arg> ( a name* -- ) |
|||
<print-str> ;Labels/equ <print-str> <print-result> |
|||
JMP2r |
|||
@<print-result> ( a -- ) |
|||
<print-hex> ;Labels/newline <print-str> |
|||
JMP2r |
|||
@<print-label> ( label* -- ) |
|||
;Labels/a <print-str> |
|||
<print-str> |
|||
;Labels/b <print-str> |
|||
;Labels/equ <print-str> |
|||
JMP2r |
|||
@<print-hex> ( byte -- ) |
|||
[ LIT "$ ] .Console/write DEO |
|||
DUP #04 SFT <print-hex>/l |
|||
&l ( -- ) |
|||
#0f AND DUP #09 GTH #27 MUL ADD [ LIT "0 ] ADD .Console/write DEO |
|||
JMP2r |
|||
@<print-str> ( str* -- ) |
|||
&while ( -- ) |
|||
LDAk .Console/write DEO |
|||
INC2 LDAk ?&while |
|||
POP2 JMP2r |
|||
@Labels |
|||
&a "a 20 $1 |
|||
&b "b 20 $1 |
|||
&equ "= 20 $1 |
|||
&newline 0a $1 |
|||
¬ "NOT 20 $1 |
|||
&and "AND 20 $1 |
|||
&or "OR 20 $1 |
|||
&xor "XOR 20 $1 |
|||
&shl "SHL 20 $1 |
|||
&shr "SHR 20 $1 |
|||
&rol "ROL 20 $1 |
|||
&ror "ROR 20 $1 |
|||
</syntaxhighlight> |
|||
{{out}} |
|||
<pre>a = $0a |
|||
b = $02 |
|||
NOT a = $f5 |
|||
a AND b = $02 |
|||
a OR b = $0a |
|||
a XOR b = $08 |
|||
a SHL b = $28 |
|||
a SHR b = $02 |
|||
a ROL b = $28 |
|||
a ROR b = $82 |
|||
</pre> |
|||
=={{header|Vala}}== |
=={{header|Vala}}== |
||
<syntaxhighlight lang="vala">void testbit(int a, int b) { |
<syntaxhighlight lang="vala">void testbit(int a, int b) { |