aboutsummaryrefslogtreecommitdiffstats
path: root/asm/test.py
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-02-12 19:52:41 +0000
committerGravatar Peter McGoron 2023-02-12 19:52:41 +0000
commit827abe43054686d6b9b1749a00f521e5707031ad (patch)
tree152459167e9c6fe47ece7f2311347480b073579e /asm/test.py
parentadd mov and unconditional jump (diff)
add immediate signed and unsigned tests
Diffstat (limited to 'asm/test.py')
-rw-r--r--asm/test.py42
1 files changed, 31 insertions, 11 deletions
diff --git a/asm/test.py b/asm/test.py
index 52ae268..f68ff1c 100644
--- a/asm/test.py
+++ b/asm/test.py
@@ -174,7 +174,7 @@ class AddTest(unittest.TestCase):
ex = ffi.Environment(p())
self.assertEqual(ex(), ffi.RunRet.STOP)
self.assertEqual(ex.getreg(0), 30)
- self.assertEqual(ex.getreg(1), -10)
+ self.assertEqual(ex.getreg(1, signed=True), -10)
def test_exec_add_throw_imm(self):
p = Program()
@@ -217,7 +217,7 @@ class MulTest(unittest.TestCase):
p.parse_asm_line("mul r1 r0 -5")
ex = ffi.Environment(p())
self.assertEqual(ex(), ffi.RunRet.STOP)
- self.assertEqual(ex.getreg(0), -25)
+ self.assertEqual(ex.getreg(0, signed=True), -25)
self.assertEqual(ex.getreg(1), 125)
def test_exec_mul_throw_imm(self):
@@ -279,7 +279,7 @@ class DivTest(unittest.TestCase):
p.parse_asm_line("sdiv r1 r0 -4")
ex = ffi.Environment(p())
self.assertEqual(ex(), ffi.RunRet.STOP)
- self.assertEqual(ex.getreg(0), -4)
+ self.assertEqual(ex.getreg(0, signed=True), -4)
self.assertEqual(ex.getreg(1), 1)
def test_exec_div_throw_imm(self):
@@ -351,14 +351,34 @@ class ProgramTest(unittest.TestCase):
self.assertEqual(ex.getreg(0), 6)
self.assertEqual(ex.getreg(1), 5)
- def test_parse_2_byte_num(self):
- p = Program()
- p.parse_asm_line("mov r0 127")
- p.parse_asm_line("mov r1 128")
- ex = ffi.Environment(p())
- self.assertEqual(ex(), ffi.RunRet.STOP)
- self.assertEqual(ex.getreg(0), 127)
- self.assertEqual(ex.getreg(1), 128)
+ def range_test(self, st, en, sgn=False):
+ for i in range(st, en):
+ p = Program()
+ p.parse_asm_line(f"mov r0 {i}")
+ ex = ffi.Environment(p())
+ self.assertEqual(ex(), ffi.RunRet.STOP)
+ self.assertEqual(ex.getreg(0, signed=sgn), i)
+
+ def test_parse_imm_compile(self):
+ self.range_test(0, 0x1000)
+ self.range_test(0x1000, 0x1100)
+ self.range_test(0x1FF00, 0x20000)
+ self.range_test(0x20000, 0x20100)
+ self.range_test(0x3FFF00, 0x400000)
+ self.range_test(0x400000, 0x400100)
+ self.range_test(0x7FFFF00, 0x8000000)
+ self.range_test(0x8000000, 0x8000100)
+ self.range_test(0xFFFFFF00, 0x100000000)
+
+ def test_parse_imm_signed(self):
+ self.range_test(0, 0x1000, sgn=True)
+ self.range_test(0x1000, 0x1100, sgn=True)
+ self.range_test(0x1FF00, 0x20000, sgn=True)
+ self.range_test(0x20000, 0x20100, sgn=True)
+ self.range_test(0x3FFF00, 0x400000, sgn=True)
+ self.range_test(0x400000, 0x400100, sgn=True)
+ self.range_test(0x7FFFF00, 0x8000000, sgn=True)
+ self.range_test(-100, 0, sgn=True)
if __name__ == "__main__":
unittest.main()