Exemplo n.º 1
0
def v850_prepare(obj, imm32, lh, ff, imm, lo):
    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 (lo // lh).bitlist():
        r = list12.pop(0)
        if b == 1: L.append(r)
    if ff == 0b00: op3 = env.sp
    elif ff == 0b01: op3 = env.cst(imm & 0xffff, 16).signextend(32)
    elif ff == 0b10: op3 = env.cst((imm & 0xffff) << 16, 32)
    elif ff == 0b11: op3 = env.cst(imm, 32)
    obj.operands = [L, env.cst(imm, 5), op3]
    obj.type = type_data_processing
Exemplo n.º 2
0
def v850_imm_reg(obj, imm, reg2, _chk=0):
    if _chk & 2:
        _chk_reg_null(obj, reg2)
    dst = env.R[reg2]
    imm5 = env.cst(imm, 5).signextend(32)
    obj.operands = [imm5, dst]
    obj.type = type_data_processing
Exemplo n.º 3
0
def v850_3ops(obj, disp, reg1):
    dst = env.R[reg1]
    disp32 = env.cst(disp << 1, 32)
    obj.operands = [disp32, dst]
    if obj.mnemonic == "JR":
        obj.operands.pop()
    obj.type = type_control_flow
Exemplo n.º 4
0
def v850_3ops(obj, imm, reg2, reg1, _chk=0):
    if _chk & 2:
        _chk_reg_null(obj, reg2)
    dst, src = env.R[reg2], env.R[reg1]
    imm16 = env.cst(imm, 16)
    obj.operands = [imm16, src, dst]
    obj.type = type_data_processing
Exemplo n.º 5
0
def v850_jmp(obj, dhi, reg2, dlo):
    disp = env.cst((dlo // dhi).int(), 22).signextend(32)
    obj.operands = [disp]
    if reg2 != 0:
        dst = env.R[reg2]
        obj.operands.append(dst)
    obj.type = type_control_flow
Exemplo n.º 6
0
def v850_prepare(obj, l1, 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 = [L, env.cst(imm, 5)]
    obj.type = type_data_processing
Exemplo n.º 7
0
def v850_fetrap(obj, v):
    if v == 0:
        raise InstructionError(obj)
    vector = env.cst(v, 4)
    obj.operands = [vector]
    obj.type = type_system
Exemplo n.º 8
0
def v850_ext4(obj, reg3, I, reg2, imm5):
    imm9 = env.cst((imm5 // I), 9)
    dst, src = env.R[reg3], env.R[reg2]
    obj.operands = [imm9, src, dst]
    obj.type = type_data_processing
Exemplo n.º 9
0
def v850_cccc(obj, reg3, cond, reg2, imm5):
    imm = env.cst(imm5, 5).signextend(32)
    dst, src = env.R[reg3], env.R[reg2]
    obj.operands = [cond, imm, src, dst]
    obj.type = type_data_processing
Exemplo n.º 10
0
def v850_trap(obj, v):
    obj.operands = [env.cst(v, 5)]
    obj.type = type_control_flow
Exemplo n.º 11
0
def v850_syscall(obj, V, v):
    obj.operands = [env.cst((v // V).int(), 8)]
    obj.type = type_control_flow
Exemplo n.º 12
0
def v850_mov(obj, disp, reg1):
    dst = env.R[reg1]
    disp32 = env.cst(disp, 32)
    obj.operands = [disp32, dst]
    obj.type = type_data_processing
Exemplo n.º 13
0
def v850_br_cond(obj, dhi, dlo):
    disp = (dlo // dhi).int()
    disp = env.cst(disp << 1, 9).signextend(32)
    obj.operands = [disp]
    obj.type = type_control_flow
Exemplo n.º 14
0
def v850_imm_reg(obj, imm):
    imm = env.cst(imm << 1, 32)
    obj.operands = [imm]
    obj.type = type_data_processing