.section data $0x0 { flags: .u8 $0b1001 main: ; Test bit and mov %status, $1 mov %r0, $0b1000 and %r0, (flags)u8 cmpeq %r0, $0b1000 jz end ; Test shift right mov %status, $2 shr %r0, $2 cmpeq %r0, $0b0010 jz end ; Test bit and mov %status, $3 and %r0, (flags)u8 cmpeq %r0, $0 jz end ; Test bit or mov %status, $4 or %r0, (flags)u8 cmpeq %r0, (flags)u8 jz end ; Test bit or mov %status, $5 or %r0, $0b10 cmpeq %r0, $0b1011 jz end ; Test shift left mov %status, $6 shl %r0, $1 cmpeq %r0, $0b10110 jz end ; Test xor mov %status, $7 xor %r0, %r0 cmpeq %r0, $0 jz end ; Test xor mov %status, $8 mov %r0, $0b1000 xor %r0, (flags)u8 cmpeq %r0, $1 jz end ; Test inv mov %status, $9 ; 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 cmpeq (flags)u8, $0b11110110 jz end ; Test inv again (reset flags to their previous value) mov %status, $10 inv (flags)u8, (flags)u8 cmpeq (flags)u8, $0b00001001 jz end mov %status, $0 end: halt .export main } .meta { ip: main }