summaryrefslogtreecommitdiff
path: root/disasm.cpp
diff options
context:
space:
mode:
authorOxore <oxore@protonmail.com>2023-05-20 18:33:40 +0300
committerOxore <oxore@protonmail.com>2023-05-20 18:33:40 +0300
commit25bf809a867720399cf12f8c0efec86eaeec26c5 (patch)
tree18abcb06422e3605e40bb8eed9d9bb716f66592e /disasm.cpp
parent1a9089d41233b3b7b207e9a7e8553dc5b14e92ae (diff)
Impl marks referencing for PEA and NBCD
Diffstat (limited to 'disasm.cpp')
-rw-r--r--disasm.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/disasm.cpp b/disasm.cpp
index 4d965fd..8be3058 100644
--- a/disasm.cpp
+++ b/disasm.cpp
@@ -927,14 +927,22 @@ static size_t disasm_nbcd_swap_pea(DisasmNode &node, const uint16_t instr, const
break;
case AddrMode::kD16AnAddr:
case AddrMode::kD8AnXiAddr:
+ break;
case AddrMode::kWord:
case AddrMode::kLong:
+ node.ref1_addr = static_cast<uint32_t>(arg.lword);
+ node.ref_kinds = kRef1AbsMask | kRef1ReadMask;
break;
case AddrMode::kD16PCAddr:
case AddrMode::kD8PCXiAddr:
if (is_nbcd) {
return disasm_verbatim(node, instr);
}
+ if (arg.mode == AddrMode::kD16PCAddr) {
+ node.ref1_addr = node.offset + kInstructionSizeStepBytes +
+ static_cast<uint32_t>(arg.d16_pc.d16);
+ node.ref_kinds = kRef1RelMask | kRef1ReadMask;
+ }
break;
case AddrMode::kImmediate:
return disasm_verbatim(node, instr);