diff options
| author | 2023-03-20 17:41:30 +0000 | |
|---|---|---|
| committer | 2023-03-20 17:41:30 +0000 | |
| commit | 6d30be57f7c1853eb1fe26e91e0d0aae8811383b (patch) | |
| tree | 88c5fcb96a85ebfde9e7a8f1c8a4923d019427ca /creole.c | |
| parent | add upsilon_creole.h (diff) | |
cloop has 64 bit values
Diffstat (limited to 'creole.c')
| -rw-r--r-- | creole.c | 14 |
1 files changed, 10 insertions, 4 deletions
@@ -654,13 +654,19 @@ enum creole_run_ret creole_step(struct creole_env *env, creole_word *sc) break; case CREOLE_CLOOP_READ: check(read_val(env, &ins, 0, &a0)); - a1 = upsilon_control_loop_read(a0); - check(creole_reg_write(env, ins.w[1], a1)); + check(read_val(env, &ins, 0, &a1)); + check(read_val(env, &ins, 0, &a2)); + if (valid_reglen(env, a1) && valid_reglen(env, a2)) { + upsilon_control_loop_read(env->reg + a1, + env->reg + a2, + a0); + } break; case CREOLE_CLOOP_WRITE: check(read_val(env, &ins, 0, &a0)); - check(read_val(env, &ins, 1, &a1)); - upsilon_control_loop_write(a0, a1); + check(read_val(env, &ins, 0, &a1)); + check(read_val(env, &ins, 0, &a2)); + upsilon_control_loop_write(a0, a1, a2); break; case CREOLE_WF_LOAD: check(read_val(env, &ins, 0, &a0)); |
