ARM: Decode 16 bit thumb PC relative memory instructions.
This commit is contained in:
@@ -89,7 +89,7 @@
|
||||
0xc, 0xd: WarnUnimpl::bx();
|
||||
0xe, 0xf: WarnUnimpl::blx(); //register
|
||||
}
|
||||
0x2, 0x3: WarnUnimpl::ldr();
|
||||
0x2, 0x3: Thumb16MemLit::thumb16MemLit();
|
||||
default: Thumb16MemReg::thumb16MemReg();
|
||||
}
|
||||
0x3, 0x4: Thumb16MemImm::thumb16MemImm();
|
||||
|
||||
@@ -450,6 +450,16 @@ def format Thumb16MemImm() {{
|
||||
decode_block = decode % classNames
|
||||
}};
|
||||
|
||||
def format Thumb16MemLit() {{
|
||||
decode_block = '''
|
||||
{
|
||||
const uint32_t rt = bits(machInst, 10, 8);
|
||||
const uint32_t imm8 = bits(machInst, 7, 0);
|
||||
return new %s(machInst, rt, INTREG_PC, true, imm8 << 2);
|
||||
}
|
||||
''' % loadImmClassName(False, True, False)
|
||||
}};
|
||||
|
||||
def format ArmLoadMemory(memacc_code, ea_code = {{ EA = Rn + disp; }},
|
||||
mem_flags = [], inst_flags = []) {{
|
||||
ea_code = ArmGenericCodeSubs(ea_code)
|
||||
|
||||
Reference in New Issue
Block a user