comparison 68kinst.c @ 1330:af26a1ce92f7

Handle address register displacement when calculating branch targets in debugger
author Michael Pavone <pavone@retrodev.com>
date Wed, 26 Apr 2017 01:05:40 -0700
parents 78416556ae02
children 696a029d09e9
comparison
equal deleted inserted replaced
1329:85a90964b557 1330:af26a1ce92f7
1571 uint32_t ret = 0; 1571 uint32_t ret = 0;
1572 switch(inst->src.addr_mode) 1572 switch(inst->src.addr_mode)
1573 { 1573 {
1574 case MODE_AREG_INDIRECT: 1574 case MODE_AREG_INDIRECT:
1575 ret = aregs[inst->src.params.regs.pri]; 1575 ret = aregs[inst->src.params.regs.pri];
1576 break;
1577 case MODE_AREG_DISPLACE:
1578 ret = aregs[inst->src.params.regs.pri] + inst->src.params.regs.displacement;
1576 break; 1579 break;
1577 case MODE_AREG_INDEX_DISP8: { 1580 case MODE_AREG_INDEX_DISP8: {
1578 uint8_t sec_reg = inst->src.params.regs.sec >> 1 & 0x7; 1581 uint8_t sec_reg = inst->src.params.regs.sec >> 1 & 0x7;
1579 ret = aregs[inst->src.params.regs.pri]; 1582 ret = aregs[inst->src.params.regs.pri];
1580 uint32_t * regfile = inst->src.params.regs.sec & 0x10 ? aregs : dregs; 1583 uint32_t * regfile = inst->src.params.regs.sec & 0x10 ? aregs : dregs;