83 lines
2.2 KiB
Plaintext
83 lines
2.2 KiB
Plaintext
* Bitwise operations 15/02/2017
|
|
BITWISE CSECT
|
|
USING BITWISE,R13
|
|
B 72(R15)
|
|
DC 17F'0'
|
|
STM R14,R12,12(R13)
|
|
ST R13,4(R15)
|
|
ST R15,8(R13)
|
|
LR R13,R15
|
|
L R1,A
|
|
XDECO R1,PG
|
|
MVC OP,=CL7'A='
|
|
XPRNT OP,L'OP+L'PG
|
|
L R1,B
|
|
XDECO R1,PG
|
|
MVC OP,=CL7'B='
|
|
XPRNT OP,L'OP+L'PG
|
|
* And
|
|
L R1,A
|
|
N R1,B
|
|
XDECO R1,PG
|
|
MVC OP,=C'A AND B'
|
|
XPRNT OP,L'OP+L'PG
|
|
* Or
|
|
L R1,A
|
|
O R1,B
|
|
XDECO R1,PG
|
|
MVC OP,=C'A OR B'
|
|
XPRNT OP,L'OP+L'PG
|
|
* Xor
|
|
L R1,A
|
|
X R1,B
|
|
XDECO R1,PG
|
|
MVC OP,=C'A XOR B'
|
|
XPRNT OP,L'OP+L'PG
|
|
* Not
|
|
L R1,A
|
|
X R1,=X'FFFFFFFF' not (by xor -1)
|
|
XDECO R1,PG
|
|
MVC OP,=CL7'NOT A'
|
|
XPRNT OP,L'OP+L'PG
|
|
*
|
|
MVC A,=X'80000008' a=-2147483640 (-2^31+8)
|
|
L R1,A
|
|
XDECO R1,PG
|
|
MVC OP,=CL7'A='
|
|
XPRNT OP,L'OP+L'PG
|
|
* shift right arithmetic (on 31 bits)
|
|
L R1,A
|
|
SRA R1,3
|
|
XDECO R1,PG
|
|
MVC OP,=C'A SRA 3'
|
|
XPRNT OP,L'OP+L'PG
|
|
* shift left arithmetic (on 31 bits)
|
|
L R1,A
|
|
SLA R1,3
|
|
XDECO R1,PG
|
|
MVC OP,=C'A SLA 3'
|
|
XPRNT OP,L'OP+L'PG
|
|
* shift right logical (on 32 bits)
|
|
L R1,A
|
|
SRL R1,3
|
|
XDECO R1,PG
|
|
MVC OP,=C'A SRL 3'
|
|
XPRNT OP,L'OP+L'PG
|
|
* shift left logical (on 32 bits)
|
|
L R1,A
|
|
SLL R1,3
|
|
XDECO R1,PG
|
|
MVC OP,=C'A SLL 3'
|
|
XPRNT OP,L'OP+L'PG
|
|
*
|
|
RETURN L R13,4(0,R13)
|
|
LM R14,R12,12(R13)
|
|
XR R15,R15
|
|
BR R14
|
|
A DC F'21'
|
|
B DC F'3'
|
|
OP DS CL7
|
|
PG DS CL12
|
|
YREGS
|
|
END BITWISE
|