mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-01 12:14:50 +01:00
Implemented Thumb Instructions: STR (imm, T1), STRB (imm), LDRB (imm), STR (imm, T2), LDR (imm, T2)
This commit is contained in:
parent
a605a43ef9
commit
14dcb18bbe
3 changed files with 83 additions and 3 deletions
|
|
@ -259,11 +259,26 @@ public:
|
|||
return Common::StringFromFormat("ldrsh %s, [%s, %s]", RegStr(t), RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb16_STR_imm_t1(Imm5 imm5, Reg n, Reg t) {
|
||||
u32 imm32 = imm5 << 2;
|
||||
return Common::StringFromFormat("str %s, [%s, #%u]", RegStr(t), RegStr(n), imm32);
|
||||
}
|
||||
|
||||
std::string thumb16_LDR_imm_t1(Imm5 imm5, Reg n, Reg t) {
|
||||
u32 imm32 = imm5 << 2;
|
||||
return Common::StringFromFormat("ldr %s, [%s, #%u]", RegStr(t), RegStr(n), imm32);
|
||||
}
|
||||
|
||||
std::string thumb16_STRB_imm(Imm5 imm5, Reg n, Reg t) {
|
||||
u32 imm32 = imm5;
|
||||
return Common::StringFromFormat("strb %s, [%s, #%u]", RegStr(t), RegStr(n), imm32);
|
||||
}
|
||||
|
||||
std::string thumb16_LDRB_imm(Imm5 imm5, Reg n, Reg t) {
|
||||
u32 imm32 = imm5;
|
||||
return Common::StringFromFormat("ldrb %s, [%s, #%u]", RegStr(t), RegStr(n), imm32);
|
||||
}
|
||||
|
||||
std::string thumb16_STRH_imm(Imm5 imm5, Reg n, Reg t) {
|
||||
u32 imm32 = imm5 << 1;
|
||||
return Common::StringFromFormat("strh %s, [%s, #%u]", RegStr(t), RegStr(n), imm32);
|
||||
|
|
@ -274,6 +289,16 @@ public:
|
|||
return Common::StringFromFormat("ldrh %s, [%s, #%u]", RegStr(t), RegStr(n), imm32);
|
||||
}
|
||||
|
||||
std::string thumb16_STR_imm_t2(Reg t, Imm5 imm5) {
|
||||
u32 imm32 = imm5 << 2;
|
||||
return Common::StringFromFormat("str %s, [sp, #%u]", RegStr(t), imm32);
|
||||
}
|
||||
|
||||
std::string thumb16_LDR_imm_t2(Reg t, Imm5 imm5) {
|
||||
u32 imm32 = imm5 << 2;
|
||||
return Common::StringFromFormat("ldr %s, [sp, #%u]", RegStr(t), imm32);
|
||||
}
|
||||
|
||||
std::string thumb16_ADR(Reg d, Imm8 imm8) {
|
||||
u32 imm32 = imm8 << 2;
|
||||
return Common::StringFromFormat("adr %s, +#%u", RegStr(d), imm32);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue