Mercurial > repos > blastem
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) { |