From 09b22f2e082350f398dcd142b6af70a30f105ce1 Mon Sep 17 00:00:00 2001 From: litvin Date: Mon, 12 Jan 2015 10:18:17 +0300 Subject: Add missed instructions: SLB,SRB,JAE,JAO,JXE,JXO (from volume 2, section 4.5.2) --- mixlib/xmix_vm.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'mixlib/xmix_vm.c') diff --git a/mixlib/xmix_vm.c b/mixlib/xmix_vm.c index 0f1104a..cf20ee1 100644 --- a/mixlib/xmix_vm.c +++ b/mixlib/xmix_vm.c @@ -188,6 +188,14 @@ sla_handler_ (mix_vm_t *vm, const mix_ins_t *ins) mix_word_shift_right_circular (get_rA_ (vm), get_rX_ (vm), n, &get_rA_ (vm), &get_rX_ (vm)); break; + case mix_SLB: + mix_word_shift_left_binary (get_rA_ (vm), get_rX_ (vm), n, + &get_rA_ (vm), &get_rX_ (vm)); + break; + case mix_SRB: + mix_word_shift_right_binary (get_rA_ (vm), get_rX_ (vm), n, + &get_rA_ (vm), &get_rX_ (vm)); + break; default: fail_unexpected_ (vm); } @@ -481,6 +489,12 @@ jpx_handler_ (mix_vm_t *vm, const mix_ins_t *ins) jump = mix_word_magnitude (val) == MIX_WORD_ZERO || mix_word_is_negative (val); break; + case mix_JAE: case mix_JXE: + jump = mix_word_is_even (val); + break; + case mix_JAO: case mix_JXO: + jump = mix_word_is_odd (val); + break; default: fail_unexpected_ (vm); } -- cgit v1.2.3