Ejemplo n.º 1
0
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
Ejemplo n.º 2
0
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
Ejemplo n.º 3
0
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
Ejemplo n.º 4
0
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
Ejemplo n.º 5
0
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
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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