2020-03-10 15:59:36 -04:00
|
|
|
.section data 0x0 {
|
|
|
|
|
flags: .u8 0b1001
|
2020-02-25 14:10:21 -05:00
|
|
|
|
|
|
|
|
main:
|
|
|
|
|
; Test bit and
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 1
|
|
|
|
|
mov %r0, 0b1000
|
2020-02-25 14:10:21 -05:00
|
|
|
and %r0, (flags)u8
|
2020-03-10 15:59:36 -04:00
|
|
|
cmpeq %r0, 0b1000
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test shift right
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 2
|
|
|
|
|
shr %r0, 2
|
|
|
|
|
cmpeq %r0, 0b0010
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test bit and
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 3
|
2020-02-25 14:10:21 -05:00
|
|
|
and %r0, (flags)u8
|
2020-03-10 15:59:36 -04:00
|
|
|
cmpeq %r0, 0
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test bit or
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 4
|
2020-02-25 14:10:21 -05:00
|
|
|
or %r0, (flags)u8
|
|
|
|
|
cmpeq %r0, (flags)u8
|
|
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test bit or
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 5
|
|
|
|
|
or %r0, 0b10
|
|
|
|
|
cmpeq %r0, 0b1011
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test shift left
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 6
|
|
|
|
|
shl %r0, 1
|
|
|
|
|
cmpeq %r0, 0b10110
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test xor
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 7
|
2020-02-25 14:10:21 -05:00
|
|
|
xor %r0, %r0
|
2020-03-10 15:59:36 -04:00
|
|
|
cmpeq %r0, 0
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test xor
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 8
|
|
|
|
|
mov %r0, 0b1000
|
2020-02-25 14:10:21 -05:00
|
|
|
xor %r0, (flags)u8
|
2020-03-10 15:59:36 -04:00
|
|
|
cmpeq %r0, 1
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test inv
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 9
|
2020-02-25 14:10:21 -05:00
|
|
|
; TODO : destination size - the line below inverts all 64 bits instead of the source 8 bits
|
|
|
|
|
; inv %r0, (flags)u8
|
|
|
|
|
inv (flags)u8, (flags)u8
|
2020-03-10 15:59:36 -04:00
|
|
|
cmpeq (flags)u8, 0b11110110
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
|
|
|
|
; Test inv again (reset flags to their previous value)
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 10
|
2020-02-25 14:10:21 -05:00
|
|
|
inv (flags)u8, (flags)u8
|
2020-03-10 15:59:36 -04:00
|
|
|
cmpeq (flags)u8, 0b00001001
|
2020-02-25 14:10:21 -05:00
|
|
|
jz end
|
|
|
|
|
|
2020-03-10 15:59:36 -04:00
|
|
|
mov %status, 0
|
2020-02-25 14:10:21 -05:00
|
|
|
end:
|
|
|
|
|
halt
|
|
|
|
|
|
|
|
|
|
.export main
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.meta {
|
2020-03-10 12:18:31 -04:00
|
|
|
ip: main
|
2020-02-25 14:10:21 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|