def test_DIV(): program = ''' .text .global main: main: LDV A, 30 LDV B, 10 DIV A, B HLT ''' c = execute_code(program) assert c.registers.get(0) == 3 assert c.registers.get(1) == 10 # Check that flooring works properly program = ''' .text .global main: main: LDV A, 38 LDV B, 10 DIV A, B HLT ''' c = execute_code(program) assert c.registers.get(0) == 3 assert c.registers.get(1) == 10
def test_LDV16(): program = ''' .text .global main: main: LDV16 A, {value} HLT ''' for i in [0, 0xFF, 0xEFF, 0xFFFF]: c = execute_code(program.format(value=i)) assert c.registers.get(0) == i
def test_RSH(): program = ''' .text .global main: main: LDV A, 30 RSH A, 3 HLT ''' c = execute_code(program) assert c.registers.get(0) == 30 >> 3
def test_NOT(): program = ''' .text .global main: main: LDV A, 30 NOT A HLT ''' c = execute_code(program) assert c.registers.get(0) == 0xFFFF - 30
def test_SWP(): program = ''' .text .global main: main: LDV A, 123 LDV B, 321 SWP A, B HLT ''' c = execute_code(program) assert c.registers.get(0) == 321 assert c.registers.get(1) == 123
def test_JLE(): program = ''' .text .global main: main: LDV A, 123 LDV B, {value} LDV C, positive: LDV D, 80 JLE B, C LDV C, 321 HLT positive: LDV C, 789 HLT ''' c = execute_code(program.format(value=123)) assert c.registers._gp == [123, 123, 789, 80] c = execute_code(program.format(value=456)) assert c.registers._gp == [123, 456, 789, 80] c = execute_code(program.format(value=12)) assert c.registers._gp == [123, 12, 321, 80]
def test_MUL(): program = ''' .text .global main: main: LDV A, 30 LDV B, 10 MUL A, B HLT ''' c = execute_code(program) assert c.registers.get(0) == 300 assert c.registers.get(1) == 10
def test_DEC(): program = ''' .text .global main: main: LDV A, 30 DEC A DEC A DEC B HLT ''' c = execute_code(program) assert c.registers.get(0) == 28 assert c.registers.get(1) == 0xFFFF
def test_INC(): program = ''' .text .global main: main: LDV A, 30 INC A INC A INC B HLT ''' c = execute_code(program) assert c.registers.get(0) == 32 assert c.registers.get(1) == 1
def test_JGE(): program = ''' .text .global main: main: LDV A, 456 LDV B, 123 LDV C, positive: JGE B, C HLT positive: LDV C, 789 HLT ''' c = execute_code(program) for reg, val in enumerate([456, 123, 789, 0]): assert c.registers.get(reg) == val