def execute(self, proc, inst): if not utils.checkCondition(proc, inst): return l = utils.getBits(inst, 24) signed_immed_24 = utils.getBits(inst, 0, 24) if l == 1: proc.lr = proc.pc branch_addr = utils.signExtend(signed_immed_24, 24, 30) branch_addr = branch_addr << 2 branch_addr = utils.signValue(branch_addr) proc.pc += 4 + branch_addr
def execute(self, proc, inst): if not utils.checkCondition(proc, inst): return modes = component.getAllUtilitiesRegisteredFor(IARMLSAddressingMode) for mode in modes: if utils.testInstruction(mode, inst): address = mode.getVal(proc, inst) break rd = utils.getBits(inst, 12, 4) rd = 'r' + str(rd) data = proc.readAddr(address, 2) data = utils.signExtend(data, 16, 32) setattr(proc, rd, data)