diff options
author | litvin <litvindev@gmail.com> | 2015-01-12 10:18:17 +0300 |
---|---|---|
committer | jao <jao@gnu.org> | 2015-03-03 19:24:16 +0100 |
commit | 09b22f2e082350f398dcd142b6af70a30f105ce1 (patch) | |
tree | 7a6237a66ba550a3a96da5a371de11af036d2a9b /mixlib/xmix_vm.c | |
parent | b83ce265d72783b8cc60e4020ec87908470cb8b6 (diff) | |
download | mdk-09b22f2e082350f398dcd142b6af70a30f105ce1.tar.gz mdk-09b22f2e082350f398dcd142b6af70a30f105ce1.tar.bz2 |
Add missed instructions: SLB,SRB,JAE,JAO,JXE,JXO (from volume 2, section 4.5.2)
Diffstat (limited to 'mixlib/xmix_vm.c')
-rw-r--r-- | mixlib/xmix_vm.c | 14 |
1 files changed, 14 insertions, 0 deletions
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); } |