aboutsummaryrefslogtreecommitdiffstats
path: root/asm
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-02-09 20:42:36 +0000
committerGravatar Peter McGoron 2023-02-09 20:42:36 +0000
commit98bf49d93172997649abe12707e797679ff9fbbb (patch)
treee5e1c87cfd6771fc489f217cba757f8ce857ac37 /asm
parentchange instructions to be an enum (diff)
test pop
Diffstat (limited to 'asm')
-rw-r--r--asm/ffi.py2
-rw-r--r--asm/test.py56
2 files changed, 56 insertions, 2 deletions
diff --git a/asm/ffi.py b/asm/ffi.py
index cb30ce9..39d9800 100644
--- a/asm/ffi.py
+++ b/asm/ffi.py
@@ -45,7 +45,7 @@ class CEnv(Structure):
("prglen", c_size_t)
]
-class ExecutionEnvironment:
+class Environment:
def __init__(self, reglen=32, lablen=32, stklen=4096, prglen=4096):
cenv = CEnv()
cenv.reglen = reglen
diff --git a/asm/test.py b/asm/test.py
index 640f3bf..ba6d125 100644
--- a/asm/test.py
+++ b/asm/test.py
@@ -58,7 +58,7 @@ class PushTest(unittest.TestCase):
p.parse_asm_line("PUSH 6")
b = p()
- ex = ffi.ExecutionEnvironment()
+ ex = ffi.Environment()
self.assertEqual(ex.load(b), ffi.CompileRet.OK)
self.assertEqual(ex.cenv.prgend, 2)
@@ -78,6 +78,60 @@ class PushTest(unittest.TestCase):
self.assertEqual(ex.cenv.prg[1].w[1], 0)
self.assertEqual(ex.cenv.prg[1].w[2], 0)
+class PopTest(unittest.TestCase):
+ def test_compile_pop_reg(self):
+ p = Program()
+ p.parse_asm_line("pop r9")
+ b = p()
+ self.assertEqual(b, b'\x02\xC2\x89\x00')
+ ex = ffi.Environment()
+ self.assertEqual(ex.load(b), ffi.CompileRet.OK)
+ self.assertEqual(ex.cenv.prgend, 1)
+
+ self.assertEqual(ex.cenv.prg[0].opcode, 2)
+ self.assertEqual(ex.cenv.prg[0].w_flags[0], 1)
+ self.assertEqual(ex.cenv.prg[0].w_flags[1], 0)
+ self.assertEqual(ex.cenv.prg[0].w_flags[2], 0)
+ self.assertEqual(ex.cenv.prg[0].w[0], 9)
+ self.assertEqual(ex.cenv.prg[0].w[1], 0)
+ self.assertEqual(ex.cenv.prg[0].w[2], 0)
+
+ def test_compile_throw_pop_literal(self):
+ p = Program()
+ ex = ffi.Environment()
+ with self.assertRaises(TypecheckException) as cm:
+ p.parse_asm_line("pop 6")
+ self.assertEqual(cm.exception.argtype, ArgType.REG)
+ self.assertEqual(cm.exception.sarg, '6')
+ self.assertEqual(cm.exception.i, 0)
+ self.assertEqual(cm.exception.opcode, 2)
+
+ def test_compile_throw_pop_label(self):
+ p = Program()
+ ex = ffi.Environment()
+ with self.assertRaises(TypecheckException) as cm:
+ p.parse_asm_line("pop l9")
+ self.assertEqual(cm.exception.argtype, ArgType.REG)
+ self.assertEqual(cm.exception.sarg, 'l9')
+ self.assertEqual(cm.exception.i, 0)
+ self.assertEqual(cm.exception.opcode, 2)
+
+ def test_compile_throw_argument_overflow(self):
+ p = Program()
+ with self.assertRaises(TypecheckLenException) as cm:
+ p.parse_asm_line("push r1 r2")
+ self.assertEqual(cm.exception.opcode, 1)
+ self.assertEqual(cm.exception.insargs, ["r1", "r2"])
+ self.assertEqual(cm.exception.argtypelen, 1)
+
+ def test_catch_typecheck_argument_underflow(self):
+ p = Program()
+ with self.assertRaises(TypecheckLenException) as cm:
+ p.parse_asm_line("push")
+ self.assertEqual(cm.exception.opcode, 2)
+ self.assertEqual(cm.exception.insargs, [])
+ self.assertEqual(cm.exception.argtypelen, 1)
+
class ProgramTest(unittest.TestCase):
def test_two(self):
p = Program()
om/avatar/4fdeb2365dc75bd544972b8cdb7992fd?s=13&d=retro' width='13' height='13' alt='Gravatar' /> aeb 1-1/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@54 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-02-05Add libraw1394 autoconf macro (not yet complete).Gravatar aeb 5-1/+183 Add functions and symbols to let macro determine version. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@53 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-31Put 'extern "C"' for C++ back in.Gravatar aeb 1-1/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@52 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-27Adapted testlibraw to new style error handling.Gravatar aeb 1-17/+18 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@51 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-19Fix building errors.c.Gravatar aeb 2-0/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@50 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-19First implementation of new error reporting API.Gravatar aeb 7-28/+134 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@49 53a565d1-3bb7-0310-b661-cf11e63c67ab 2001-01-04Fix misplaced device file in Debian installation.Gravatar aeb 3-3/+10 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@48 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-12-12Debian scripts use makedev (>=2.3.1-49) in postinst by default now.Gravatar aeb 7-30/+104 Postinst script using mknod added as alternative. Revision bumped up to 0.8.1. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@47 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-25Fix postinst ldconfig.Gravatar aeb 2-11/+11 Fix device file creation. Install NEWS and README as documentation in the dev package. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@46 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-25Add some information about return values.Gravatar aeb 1-3/+29 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@45 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-24Bump up version numbers for release.Gravatar aeb 2-3/+11 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@44 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-24Added libraw1394.postinst.in to list of distributed files.Gravatar aeb 3-3/+35 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@43 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-23Add ldconfig in deb postinst for Debian policy conformance.Gravatar aeb 2-2/+17 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@42 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-23Removed acconfig.h, which wasn't needed for some time.Gravatar aeb 1-13/+0 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@41 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-11-22Added ieee1394.h header.Gravatar aeb 3-1/+38 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@40 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-13Fix raw1394_start_iso_write() which uses wrong variable.Gravatar aeb 1-1/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@39 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-10Work around compiler warnings for int/ptr casts.Gravatar aeb 6-10/+20 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@38 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-10Added control files for Debian packages.Gravatar aeb 6-8/+106 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@37 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-09-01Added missing prototypes for iso send functions.Gravatar aeb 1-0/+7 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@36 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-08-08Added raw1394_get_irm_id().Gravatar aeb 7-7/+39 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@35 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-08-06Added support for isochronous sending.Gravatar aeb 3-0/+35 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@34 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-07-05Added raw1394_reset_bus() call.Gravatar aeb 4-0/+23 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@33 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-22- Set library version info in configure.in, use in src/Makefile.am.Gravatar aeb 4-2/+16 - Enable compiler warnings. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@32 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-15Update libtool version number.Gravatar aeb 2-2/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@31 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-14Added copyright headers.Gravatar aeb 6-0/+54 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@30 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-11Added explicit AC_PROG_INSTALL call.Gravatar aeb 1-0/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@29 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-09Fix size of error field.Gravatar aeb 1-2/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@28 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-06-02Modified support for 32/64 bit environments, control struct fields have ↵Gravatar aeb 7-43/+28 fixed size now. git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@27 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-05-28Added support for environments with 64 bit kernel and 32 bit userland.Gravatar aeb 8-7/+45 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@26 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-27Fixed missing setting of ext code in raw1394_start_lock()Gravatar aeb 1-0/+1 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@25 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-15Fixed lock transaction to actually return response value.Gravatar aeb 3-5/+11 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@24 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-12Add userdata functions as news.Gravatar aeb 1-0/+4 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@23 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-04-05Add userdata functions.Gravatar aeb 3-0/+18 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@22 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Bump version number to 0.6.Gravatar aeb 3-5/+6 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@21 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Mention byte order change.Gravatar aeb 1-0/+2 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@20 53a565d1-3bb7-0310-b661-cf11e63c67ab 2000-03-18Mention SourceForge home.Gravatar aeb 1-1/+5 git-svn-id: svn://svn.linux1394.org/libraw1394/trunk@19 53a565d1-3bb7-0310-b661-cf11e63c67ab