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 }