Mercurial > repos > blastem
comparison m68k_to_x86.c @ 97:c7185fd840fc
Fix address register indexed addressing (probably)
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Thu, 27 Dec 2012 21:32:00 -0800 |
parents | f894f85cf39d |
children | 104e257fb93c |
comparison
equal
deleted
inserted
replaced
96:f894f85cf39d | 97:c7185fd840fc |
---|---|
222 out = add_rr(out, SCRATCH2, SCRATCH1, SZ_D); | 222 out = add_rr(out, SCRATCH2, SCRATCH1, SZ_D); |
223 } | 223 } |
224 if (inst->src.params.regs.displacement) { | 224 if (inst->src.params.regs.displacement) { |
225 out = add_ir(out, inst->src.params.regs.displacement, SCRATCH1, SZ_D); | 225 out = add_ir(out, inst->src.params.regs.displacement, SCRATCH1, SZ_D); |
226 } | 226 } |
227 switch (inst->extra.size) | |
228 { | |
229 case OPSIZE_BYTE: | |
230 out = call(out, (char *)m68k_read_byte_scratch1); | |
231 break; | |
232 case OPSIZE_WORD: | |
233 out = call(out, (char *)m68k_read_word_scratch1); | |
234 break; | |
235 case OPSIZE_LONG: | |
236 out = call(out, (char *)m68k_read_long_scratch1); | |
237 break; | |
238 } | |
239 ea->mode = MODE_REG_DIRECT; | |
240 ea->base = SCRATCH1; | |
227 break; | 241 break; |
228 case MODE_PC_DISPLACE: | 242 case MODE_PC_DISPLACE: |
229 out = cycles(out, BUS); | 243 out = cycles(out, BUS); |
230 out = mov_ir(out, inst->src.params.regs.displacement + inst->address+2, SCRATCH1, SZ_D); | 244 out = mov_ir(out, inst->src.params.regs.displacement + inst->address+2, SCRATCH1, SZ_D); |
231 switch (inst->extra.size) | 245 switch (inst->extra.size) |