Mercurial > repos > blastem
comparison m68k_to_x86.c @ 516:7f54f1773e84
Properly handle jmp instructions in the debugger next command
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Sun, 09 Feb 2014 00:42:43 -0800 |
parents | b449af228c63 |
children | c2716b502a81 |
comparison
equal
deleted
inserted
replaced
515:1495179d6737 | 516:7f54f1773e84 |
---|---|
1951 } else { | 1951 } else { |
1952 dst = mov_rdisp8r(dst, CONTEXT, reg_offset(&(inst->src)), SCRATCH1, SZ_D); | 1952 dst = mov_rdisp8r(dst, CONTEXT, reg_offset(&(inst->src)), SCRATCH1, SZ_D); |
1953 } | 1953 } |
1954 sec_reg = (inst->src.params.regs.sec >> 1) & 0x7; | 1954 sec_reg = (inst->src.params.regs.sec >> 1) & 0x7; |
1955 if (inst->src.params.regs.sec & 1) { | 1955 if (inst->src.params.regs.sec & 1) { |
1956 //32-bit index register | |
1956 if (inst->src.params.regs.sec & 0x10) { | 1957 if (inst->src.params.regs.sec & 0x10) { |
1957 if (opts->aregs[sec_reg] >= 0) { | 1958 if (opts->aregs[sec_reg] >= 0) { |
1958 dst = add_rr(dst, opts->aregs[sec_reg], SCRATCH1, SZ_D); | 1959 dst = add_rr(dst, opts->aregs[sec_reg], SCRATCH1, SZ_D); |
1959 } else { | 1960 } else { |
1960 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D); | 1961 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D); |
1965 } else { | 1966 } else { |
1966 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, dregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D); | 1967 dst = add_rdisp8r(dst, CONTEXT, offsetof(m68k_context, dregs) + sizeof(uint32_t)*sec_reg, SCRATCH1, SZ_D); |
1967 } | 1968 } |
1968 } | 1969 } |
1969 } else { | 1970 } else { |
1971 //16-bit index register | |
1970 if (inst->src.params.regs.sec & 0x10) { | 1972 if (inst->src.params.regs.sec & 0x10) { |
1971 if (opts->aregs[sec_reg] >= 0) { | 1973 if (opts->aregs[sec_reg] >= 0) { |
1972 dst = movsx_rr(dst, opts->aregs[sec_reg], SCRATCH2, SZ_W, SZ_D); | 1974 dst = movsx_rr(dst, opts->aregs[sec_reg], SCRATCH2, SZ_W, SZ_D); |
1973 } else { | 1975 } else { |
1974 dst = movsx_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH2, SZ_W, SZ_D); | 1976 dst = movsx_rdisp8r(dst, CONTEXT, offsetof(m68k_context, aregs) + sizeof(uint32_t)*sec_reg, SCRATCH2, SZ_W, SZ_D); |