コード例 #1
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_default(obj, n, i, d):
    Rn = env.R[n]
    imm3 = env.cst(i, 3)
    disp = env.cst(d, 12).zeroextend(32)
    dst = env.mem(disp + Rn, obj.size)
    obj.operands = [imm3, dst]
    obj.type = type_data_processing
コード例 #2
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, n, i4, i16):
    Rn = env.R[n]
    imm20 = env.cst((i16 // i4).int(-1), 20)
    if obj.mnemonic == 'MOVI20S': imm20 = imm20 << 8
    imm20 = imm20.signextend(32)
    obj.operands = [imm20, Rn]
    obj.type = type_data_processing
コード例 #3
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, n, m, d):
    Rn = env.R[n]
    Rm = env.R[m]
    scale = obj.size // 8
    disp = env.cst(d * scale, 32)
    obj.operands = [Rm, env.mem(Rn + disp, obj.size)]
    obj.type = type_data_processing
コード例 #4
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, sz, d):
    R0 = env.R[0]
    adr = env.pc if sz == 3 else env.GBR
    scale = 1 << sz
    disp = env.cst(d * scale, 32)
    src = env.mem(adr + disp, 8 << sz)
    obj.operands = [src, R0]
    obj.type = type_data_processing
コード例 #5
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, n, m, sz, d):
    if sz > 1: raise InstructionError(obj)
    Rn = env.R[n]
    Rm = env.R[m]
    scale = 1 << sz
    disp = env.cst(d * scale, 32)
    src = env.mem(Rm + disp, 8 << sz)
    obj.operands = [src, Rn]
    obj.type = type_data_processing
コード例 #6
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, n, m, sz, d):
    if sz == 3: raise InstructionError(obj)
    Rn = env.R[n]
    Rm = env.R[m]
    scale = 1 << sz
    disp = env.cst(d * scale, 32)
    dst = env.mem(Rn + disp, 8 << sz)
    obj.size = 8 << sz
    obj.operands = [Rm, dst]
    obj.type = type_data_processing
コード例 #7
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, sz, d):
    if sz == 3: raise InstructionError(obj)
    R0 = env.R[0]
    adr = env.GBR
    scale = 1 << sz
    disp = env.cst(d * scale, 32)
    dst = env.mem(adr + disp, 8 << sz)
    obj.size = 8 << sz
    obj.operands = [R0, dst]
    obj.type = type_data_processing
コード例 #8
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_float(obj, m, n, d):
    FRm = env.FR[m]
    Rn = env.R[n]
    disp = env.cst(d, 12).zeroextend(32) << 2
    obj.operands = [FRm, env.mem(Rn + disp, 32)]
    obj.type = type_data_processing
コード例 #9
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_default(obj, n, i):
    Rn = env.R[n]
    imm3 = env.cst(i, 3)
    obj.operands = [imm3, Rn]
    obj.type = type_data_processing
コード例 #10
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_default(obj, i):
    imm8 = env.cst(i, 8)
    obj.operands = [imm8]
    obj.type = type_other
コード例 #11
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_jsr_nn(obj, d):
    imm = env.cst(d, 32)
    p = env.mem(env.TBR + imm, 32)
    obj.operands = [env.mem(p, 32)]
    obj.type = type_control_flow
コード例 #12
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_branch(obj, d):
    R0 = env.R[0]
    offset = env.cst(d, 12).signextend(32)
    obj.operands = [offset * 2]
    obj.misc['delayed'] = True
    obj.type = type_control_flow
コード例 #13
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_default(obj, i):
    R0 = env.R[0]
    imm8 = env.cst(i, 8)
    obj.operands = [imm8, env.mem(R0 + env.GBR, 8)]
    obj.type = type_data_processing
コード例 #14
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_default(obj, i):
    R0 = env.R[0]
    imm8 = env.cst(i, 8).zeroextend(32)
    obj.operands = [imm8, R0]
    obj.type = type_data_processing
コード例 #15
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, n, d):
    Rn = env.R[n]
    scale = obj.size // 8
    disp = env.cst(d * scale, 32)
    obj.operands = [env.mem(env.pc + disp, obj.size), Rn]
    obj.type = type_data_processing
コード例 #16
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, n, i):
    Rn = env.R[n]
    imm8 = env.cst(i, 8).signextend(32)
    obj.operands = [imm8, Rn]
    obj.type = type_data_processing
コード例 #17
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_data_transfer(obj, m, d):
    Rm = env.R[m]
    scale = obj.size // 8
    disp = env.cst(d * scale, 32)
    obj.operands = [env.mem(Rm + disp, obj.size), env.R[0]]
    obj.type = type_data_processing
コード例 #18
0
ファイル: spec_sh2.py プロジェクト: zytMatrix/amoco
def sh2_branch(obj, d):
    offset = env.cst(d, 8).signextend(32)
    obj.operands = [offset * 2]
    if hasattr(obj, 'cond'):
        obj.misc['delayed'] = True
    obj.type = type_control_flow