ARM: Decode 16 bit thumb PC relative memory instructions.

This commit is contained in:
Gabe Black
2010-06-02 12:58:01 -05:00
parent dc8af1b211
commit a86491fbf2
2 changed files with 11 additions and 1 deletions

View File

@@ -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();

View File

@@ -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)