Mercurial > repos > blastem
comparison dis.c @ 164:afbfb0ac0256
Small fix to disassembler
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sat, 05 Jan 2013 22:59:06 -0800 |
parents | 6b593ea0ed90 |
children | 7c227a8ec53d |
comparison
equal
deleted
inserted
replaced
163:5559616e6bd8 | 164:afbfb0ac0256 |
---|---|
143 //printf("%X: %s\n", instbuf.address, disbuf); | 143 //printf("%X: %s\n", instbuf.address, disbuf); |
144 check_reference(&instbuf, &(instbuf.src)); | 144 check_reference(&instbuf, &(instbuf.src)); |
145 check_reference(&instbuf, &(instbuf.dst)); | 145 check_reference(&instbuf, &(instbuf.dst)); |
146 if (instbuf.op == M68K_ILLEGAL || instbuf.op == M68K_RTS || instbuf.op == M68K_RTE || instbuf.op == M68K_INVALID) { | 146 if (instbuf.op == M68K_ILLEGAL || instbuf.op == M68K_RTS || instbuf.op == M68K_RTE || instbuf.op == M68K_INVALID) { |
147 break; | 147 break; |
148 } else if (instbuf.op == M68K_BCC || instbuf.op == M68K_DBCC || instbuf.op == M68K_BSR) { | 148 } |
149 if (instbuf.op == M68K_BCC || instbuf.op == M68K_DBCC || instbuf.op == M68K_BSR) { | |
149 if (instbuf.op == M68K_BCC && instbuf.extra.cond == COND_TRUE) { | 150 if (instbuf.op == M68K_BCC && instbuf.extra.cond == COND_TRUE) { |
150 address = instbuf.address + 2 + instbuf.src.params.immed; | 151 address = instbuf.address + 2 + instbuf.src.params.immed; |
151 encoded = filebuf + address/2; | 152 encoded = filebuf + address/2; |
152 reference(address); | 153 reference(address); |
153 if (is_visited(address)) { | 154 if (is_visited(address)) { |
175 break; | 176 break; |
176 } | 177 } |
177 } else if(instbuf.op == M68K_JSR) { | 178 } else if(instbuf.op == M68K_JSR) { |
178 if (instbuf.src.addr_mode == MODE_ABSOLUTE || instbuf.src.addr_mode == MODE_ABSOLUTE_SHORT) { | 179 if (instbuf.src.addr_mode == MODE_ABSOLUTE || instbuf.src.addr_mode == MODE_ABSOLUTE_SHORT) { |
179 def = defer(instbuf.src.params.immed, def); | 180 def = defer(instbuf.src.params.immed, def); |
180 } else if (instbuf.src.addr_mode = MODE_PC_DISPLACE) { | 181 } else if (instbuf.src.addr_mode == MODE_PC_DISPLACE) { |
181 def = defer(instbuf.src.params.regs.displacement + instbuf.address + 2, def); | 182 def = defer(instbuf.src.params.regs.displacement + instbuf.address + 2, def); |
182 } | 183 } |
183 } | 184 } |
184 } | 185 } |
185 } | 186 } |