summaryrefslogtreecommitdiff
path: root/dis.c
diff options
context:
space:
mode:
authorMike Pavone <pavone@retrodev.com>2012-12-28 19:21:05 -0800
committerMike Pavone <pavone@retrodev.com>2012-12-28 19:21:05 -0800
commitf18f61486c979c1955bab5549ef05a985d45fc05 (patch)
tree3cce90915859075d93196941f48991e18142998a /dis.c
parente9348e64584c3fdc88bc6de533216f09b679126d (diff)
Allow jmp/jsr to follow pc-relative addresses in disassembler
Diffstat (limited to 'dis.c')
-rw-r--r--dis.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/dis.c b/dis.c
index c6357d8..e99b332 100644
--- a/dis.c
+++ b/dis.c
@@ -106,12 +106,20 @@ int main(int argc, char ** argv)
if (is_visited(address)) {
break;
}
+ } else if (instbuf.src.addr_mode = MODE_PC_DISPLACE) {
+ address = instbuf.src.params.regs.displacement + instbuf.address + 2;
+ encoded = filebuf + address/2;
+ if (is_visited(address)) {
+ break;
+ }
} else {
break;
}
} else if(instbuf.op == M68K_JSR) {
if (instbuf.src.addr_mode == MODE_ABSOLUTE || instbuf.src.addr_mode == MODE_ABSOLUTE_SHORT) {
def = defer(instbuf.src.params.immed, def);
+ } else if (instbuf.src.addr_mode = MODE_PC_DISPLACE) {
+ def = defer(instbuf.src.params.regs.displacement + instbuf.address + 2, def);
}
}
}