def v850_ld_st(obj, d, reg2, b, reg1, _size): if reg2 == 0: raise InstructionError(obj) disp = (b // d).int(-1) src = env.mem(env.R[reg1], _size, disp=disp) dst = env.R[reg2] obj.operands = [src, dst] obj.type = type_data_processing
def v850_ld_st(obj, reg2, disp, _size): if reg2 == 0: raise InstructionError(obj) if _size > 8: disp = disp << 1 dst, src = env.R[reg2], env.mem(env.ep, _size, disp=disp) obj.operands = [dst, src] obj.type = type_data_processing
def v850_ld_st(obj, dhi, reg3, dlo, reg1, _size): if _size > 8 and dlo[0]: raise InstructionError(obj) disp23 = (dlo // dhi).int(-1) src = env.mem(env.R[reg1], _size, disp=disp23) dst = env.R[reg3] if obj.mnemonic.startswith('ST'): src, dst = dst, src obj.operands = [src, dst] obj.type = type_data_processing
def v850_ld_st(obj, disp, d, reg2, reg1, _size): disp = disp.int(-1) << 1 if _size == 8: disp |= d src = env.mem(env.R[reg1], _size, disp=disp) dst = env.R[reg2] if obj.mnemonic.startswith('ST'): src, dst = dst, src obj.operands = [src, dst] obj.type = type_data_processing
def v850_ld_st(obj, reg2, disp, d, _size): disp = (disp << 1) if _size < 32: disp += d if _size > 8: disp = disp << 1 dst, src = env.R[reg2], env.mem(env.ep, _size, disp=disp) if obj.mnemonic.startswith('SST'): src, dst = dst, src obj.operands = [src, dst] obj.type = type_data_processing
def v850_dispose(obj, l1, reg2, imm, l0): imm = imm << 2 list12 = [ env.R[x] for x in (30, 31, 29, 28, 23, 22, 21, 20, 27, 26, 25, 24) ] L = [] for b in (l0 // l1).bitlist(): r = list12.pop(0) if b == 1: L.append(r) obj.operands = [env.mem(env.sp, 32, disp=imm), L] if reg2 != 0: obj.operands.append(env.R[reg2]) obj.type = type_data_processing
def v850_ext3(obj, reg3, reg2, reg1): dst, src2, src1 = env.R[reg3], env.R[reg2], env.R[reg1] adr = src1 & 0xFFFFFFFC obj.operands = [env.mem(adr, 32), src2, dst] obj.type = type_data_processing
def v850_ext1(obj, reg2, reg1): src = env.mem(env.R[reg1], 8) r2 = env.R[reg2] obj.operands = [r2, src] obj.type = type_data_processing
def v850_bitwise(obj, disp, bnum, reg1): src = env.mem(env.R[reg1], 8, disp=disp.int(-1)) obj.operands = [cst(bnum.int(), 3), src] obj.type = type_data_processing