comparison dis.c @ 114:e821b6fde0e4

Allow jmp/jsr to follow pc-relative addresses in disassembler
author Mike Pavone <pavone@retrodev.com>
date Fri, 28 Dec 2012 19:21:05 -0800
parents 8b50d2c975b2
children ab50421b1b7a
comparison
equal deleted inserted replaced
113:d260996eea55 114:e821b6fde0e4
104 address = instbuf.src.params.immed; 104 address = instbuf.src.params.immed;
105 encoded = filebuf + address/2; 105 encoded = filebuf + address/2;
106 if (is_visited(address)) { 106 if (is_visited(address)) {
107 break; 107 break;
108 } 108 }
109 } else if (instbuf.src.addr_mode = MODE_PC_DISPLACE) {
110 address = instbuf.src.params.regs.displacement + instbuf.address + 2;
111 encoded = filebuf + address/2;
112 if (is_visited(address)) {
113 break;
114 }
109 } else { 115 } else {
110 break; 116 break;
111 } 117 }
112 } else if(instbuf.op == M68K_JSR) { 118 } else if(instbuf.op == M68K_JSR) {
113 if (instbuf.src.addr_mode == MODE_ABSOLUTE || instbuf.src.addr_mode == MODE_ABSOLUTE_SHORT) { 119 if (instbuf.src.addr_mode == MODE_ABSOLUTE || instbuf.src.addr_mode == MODE_ABSOLUTE_SHORT) {
114 def = defer(instbuf.src.params.immed, def); 120 def = defer(instbuf.src.params.immed, def);
121 } else if (instbuf.src.addr_mode = MODE_PC_DISPLACE) {
122 def = defer(instbuf.src.params.regs.displacement + instbuf.address + 2, def);
115 } 123 }
116 } 124 }
117 } 125 }
118 } 126 }
119 for (address = 0; address < filesize; address+=2) { 127 for (address = 0; address < filesize; address+=2) {