mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-01 20:24:36 +01:00
Implement Thumb instructions: BX, BLX (reg), B (T1), B (T2)
This commit is contained in:
parent
2363759c62
commit
e0d6e28b67
6 changed files with 217 additions and 142 deletions
|
|
@ -380,6 +380,13 @@ public:
|
|||
return Common::StringFromFormat("ldm %s%s, %s", RegStr(n), write_back ? "!" : "", RegListStr(reg_list).c_str());
|
||||
}
|
||||
|
||||
std::string thumb16_BX(Reg m) {
|
||||
return Common::StringFromFormat("bx %s", RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb16_BLX_reg(Reg m) {
|
||||
return Common::StringFromFormat("blx %s", RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb16_UDF() {
|
||||
return Common::StringFromFormat("udf");
|
||||
|
|
@ -388,6 +395,16 @@ public:
|
|||
std::string thumb16_SVC(Imm8 imm8) {
|
||||
return Common::StringFromFormat("svc #%u", imm8);
|
||||
}
|
||||
|
||||
std::string thumb16_B_t1(Cond cond, Imm8 imm8) {
|
||||
s32 imm32 = Common::SignExtend<9, s32>(imm8 << 1) + 4;
|
||||
return Common::StringFromFormat("b%s %s#%u", CondStr(cond), SignStr(imm32), abs(imm32));
|
||||
}
|
||||
|
||||
std::string thumb16_B_t2(Imm11 imm11) {
|
||||
s32 imm32 = Common::SignExtend<12, s32>(imm11 << 1) + 4;
|
||||
return Common::StringFromFormat("b %s#%u", SignStr(imm32), abs(imm32));
|
||||
}
|
||||
};
|
||||
|
||||
std::string DisassembleThumb16(u16 instruction) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue