aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2023-02-25 21:10:08 +0000
committerGravatar Peter McGoron 2023-02-25 21:10:08 +0000
commit481dc56522f99c2fb715e1bb477c1c95b6b77bed (patch)
treee55ccbda55321edcadcb2b5eae39c1f4da80aec0
parenttest repeat db (diff)
add db overwrite
-rw-r--r--asm/test.py13
-rw-r--r--creole.c2
2 files changed, 14 insertions, 1 deletions
diff --git a/asm/test.py b/asm/test.py
index 9e82f9d..ac93180 100644
--- a/asm/test.py
+++ b/asm/test.py
@@ -459,6 +459,19 @@ class DataTest(unittest.TestCase):
self.assertEqual(ex(), ffi.RunRet.STOP)
self.assertEqual(ex.getdat(0), [5,6,7,8,9])
self.assertEqual(ex.getdat(1), [0x10,0x11,0x12,0x13])
+ def test_alloc_repeat_jump_skip(self):
+ p = Program()
+ p.parse_lines([
+ "db d0 [1,2,3,4]",
+ "db d1 [10,11,12,13]",
+ "j .end",
+ "db d1 [5,6,7,8,9]",
+ ".end"
+ ])
+ ex = ffi.Environment(p())
+ self.assertEqual(ex(), ffi.RunRet.STOP)
+ self.assertEqual(ex.getdat(0), [1,2,3,4])
+ self.assertEqual(ex.getdat(1), [0x10,0x11,0x12,0x13])
class SCEnv(ffi.Environment):
def syscall(self, s):
diff --git a/creole.c b/creole.c
index d3d51e4..5ddfb0c 100644
--- a/creole.c
+++ b/creole.c
@@ -559,7 +559,7 @@ enum creole_run_ret creole_step(struct creole_env *env, creole_word *sc)
switch (ins.opcode) {
case CREOLE_DB:
- break;
+ env->dats[ins.w[0]] = ins.datapt;
case CREOLE_PUSH:
check(read_val(env, &ins, 0, &a1));
check(creole_push(env, a1));