Mercurial > repos > blastem
comparison jagcpu.c @ 1095:920d796ea6a2
Correct disassembly of r14/r15 relative loads and stores
author | Michael Pavone <pavone@retrodev.com> |
---|---|
date | Mon, 31 Oct 2016 18:36:17 -0700 |
parents | 1dba006bad47 |
children | 1ab30d427db8 |
comparison
equal
deleted
inserted
replaced
1094:1dba006bad47 | 1095:920d796ea6a2 |
---|---|
217 labels ? "%s %s, ADR_%X" : "%s %s, $W%X", | 217 labels ? "%s %s, ADR_%X" : "%s %s, $W%X", |
218 mnemonics[opcode], jag_cc(inst), jag_jr_dest(inst, address) | 218 mnemonics[opcode], jag_cc(inst), jag_jr_dest(inst, address) |
219 ); | 219 ); |
220 case JAG_JUMP: | 220 case JAG_JUMP: |
221 return sprintf(dst, "%s %s, (r%d)", mnemonics[opcode], jag_cc(inst), jag_reg1(inst)); | 221 return sprintf(dst, "%s %s, (r%d)", mnemonics[opcode], jag_cc(inst), jag_reg1(inst)); |
222 case JAG_LOAD_R14_REL: | |
223 case JAG_LOAD_R15_REL: | |
224 return sprintf(dst, "%s (r%d+%d), r%d", | |
225 mnemonics[opcode], | |
226 opcode == JAG_LOAD_R14_REL ? 14 : 15, | |
227 jag_quick(inst), | |
228 jag_reg2(inst) | |
229 ); | |
230 break; | |
231 case JAG_STORE_R14_REL: | |
232 case JAG_STORE_R15_REL: | |
233 return sprintf(dst, "%s r%d, (r%d+%d)", | |
234 mnemonics[opcode], | |
235 jag_reg2(inst), | |
236 opcode == JAG_STORE_R14_REL ? 14 : 15, | |
237 jag_quick(inst) | |
238 ); | |
239 break; | |
240 case JAG_LOAD_R14_INDEXED: | |
241 case JAG_LOAD_R15_INDEXED: | |
242 return sprintf(dst, "%s (r%d+r%d), r%d", | |
243 mnemonics[opcode], | |
244 opcode == JAG_LOAD_R14_INDEXED ? 14 : 15, | |
245 jag_reg1(inst), | |
246 jag_reg2(inst) | |
247 ); | |
248 break; | |
249 case JAG_STORE_R14_INDEXED: | |
250 case JAG_STORE_R15_INDEXED: | |
251 return sprintf(dst, "%s r%d, (r%d+r%d)", | |
252 mnemonics[opcode], | |
253 jag_reg2(inst), | |
254 opcode == JAG_STORE_R14_INDEXED ? 14 : 15, | |
255 jag_reg1(inst) | |
256 ); | |
257 break; | |
222 default: | 258 default: |
223 if (is_quick_1_32_opcode(opcode, is_gpu)) { | 259 if (is_quick_1_32_opcode(opcode, is_gpu)) { |
224 return sprintf(dst, "%s %d, r%d", mnemonics[opcode], jag_quick(inst), jag_reg2(inst)); | 260 return sprintf(dst, "%s %d, r%d", mnemonics[opcode], jag_quick(inst), jag_reg2(inst)); |
225 } else if (is_quick_0_31_opcode(opcode)) { | 261 } else if (is_quick_0_31_opcode(opcode)) { |
226 return sprintf(dst, "%s %d, r%d", mnemonics[opcode], jag_reg1(inst), jag_reg2(inst)); | 262 return sprintf(dst, "%s %d, r%d", mnemonics[opcode], jag_reg1(inst), jag_reg2(inst)); |