From 08362a2a209a55b5ab16abcff42e17cff12f50d1 Mon Sep 17 00:00:00 2001 From: folkert van heusden Date: Mon, 27 Mar 2023 21:12:30 +0200 Subject: [PATCH] micro opt --- cpu.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cpu.cpp b/cpu.cpp index 5d11220..ecdc683 100644 --- a/cpu.cpp +++ b/cpu.cpp @@ -403,13 +403,13 @@ gam_rc_t cpu::getGAMAddress(const uint8_t mode, const int reg, const word_mode_t bool cpu::double_operand_instructions(const uint16_t instr) { - const word_mode_t word_mode = instr & 0x8000 ? wm_byte : wm_word; - const uint8_t operation = (instr >> 12) & 7; if (operation == 0b000) return single_operand_instructions(instr); + const word_mode_t word_mode = instr & 0x8000 ? wm_byte : wm_word; + if (operation == 0b111) { if (word_mode == wm_byte) return false; @@ -464,6 +464,7 @@ bool cpu::double_operand_instructions(const uint16_t instr) gam_rc_t g_src = getGAM(src_mode, src_reg, word_mode, rm_cur); auto g_dst = getGAM(dst_mode, dst_reg, word_mode, rm_cur); + uint16_t result = (g_dst.value.value() & g_src.value.value()) & (word_mode == wm_byte ? 0xff : 0xffff); setPSW_flags_nzv(result, word_mode); @@ -1551,8 +1552,7 @@ bool cpu::misc_operations(const uint16_t instr) int dst_reg = instr & 7; - word_mode_t word_mode = wm_word; - setPC(getGAMAddress(dst_mode, dst_reg, word_mode).addr.value()); + setPC(getGAMAddress(dst_mode, dst_reg, wm_word).addr.value()); return true; }