mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-01 04:04:30 +01:00
s/thumb1/thumb16/g: Thumb16 refers to 16-bit thumb instructions, and Thumb32 to 32-bit ones
This commit is contained in:
parent
6e46e7899a
commit
44352680c6
6 changed files with 245 additions and 245 deletions
|
|
@ -10,7 +10,7 @@
|
|||
#include "common/bit_util.h"
|
||||
#include "common/string_util.h"
|
||||
#include "frontend/arm_types.h"
|
||||
#include "frontend/decoder/thumb1.h"
|
||||
#include "frontend/decoder/thumb16.h"
|
||||
|
||||
namespace Dynarmic {
|
||||
namespace Arm {
|
||||
|
|
@ -102,149 +102,149 @@ public:
|
|||
return "<internal error>";
|
||||
}
|
||||
|
||||
std::string thumb1_LSL_imm(Imm5 imm5, Reg m, Reg d) {
|
||||
std::string thumb16_LSL_imm(Imm5 imm5, Reg m, Reg d) {
|
||||
return Common::StringFromFormat("lsls %s, %s, #%u", RegStr(d), RegStr(m), imm5);
|
||||
}
|
||||
|
||||
std::string thumb1_LSR_imm(Imm5 imm5, Reg m, Reg d) {
|
||||
std::string thumb16_LSR_imm(Imm5 imm5, Reg m, Reg d) {
|
||||
return Common::StringFromFormat("lsrs %s, %s, #%u", RegStr(d), RegStr(m), imm5);
|
||||
}
|
||||
|
||||
std::string thumb1_ASR_imm(Imm5 imm5, Reg m, Reg d) {
|
||||
std::string thumb16_ASR_imm(Imm5 imm5, Reg m, Reg d) {
|
||||
return Common::StringFromFormat("asrs %s, %s, #%u", RegStr(d), RegStr(m), imm5);
|
||||
}
|
||||
|
||||
std::string thumb1_ADD_reg_t1(Reg m, Reg n, Reg d) {
|
||||
std::string thumb16_ADD_reg_t1(Reg m, Reg n, Reg d) {
|
||||
return Common::StringFromFormat("adds %s, %s, %s", RegStr(d), RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_SUB_reg(Reg m, Reg n, Reg d) {
|
||||
std::string thumb16_SUB_reg(Reg m, Reg n, Reg d) {
|
||||
return Common::StringFromFormat("subs %s, %s, %s", RegStr(d), RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_ADD_imm_t1(Imm3 imm3, Reg n, Reg d) {
|
||||
std::string thumb16_ADD_imm_t1(Imm3 imm3, Reg n, Reg d) {
|
||||
return Common::StringFromFormat("adds %s, %s, #%u", RegStr(d), RegStr(n), imm3);
|
||||
}
|
||||
|
||||
std::string thumb1_SUB_imm_t1(Imm3 imm3, Reg n, Reg d) {
|
||||
std::string thumb16_SUB_imm_t1(Imm3 imm3, Reg n, Reg d) {
|
||||
return Common::StringFromFormat("subs %s, %s, #%u", RegStr(d), RegStr(n), imm3);
|
||||
}
|
||||
|
||||
std::string thumb1_MOV_imm(Reg d, Imm8 imm8) {
|
||||
std::string thumb16_MOV_imm(Reg d, Imm8 imm8) {
|
||||
return Common::StringFromFormat("movs %s, #%u", RegStr(d), imm8);
|
||||
}
|
||||
|
||||
std::string thumb1_CMP_imm(Reg n, Imm8 imm8) {
|
||||
std::string thumb16_CMP_imm(Reg n, Imm8 imm8) {
|
||||
return Common::StringFromFormat("cmp %s, #%u", RegStr(n), imm8);
|
||||
}
|
||||
|
||||
std::string thumb1_ADD_imm_t2(Reg d_n, Imm8 imm8) {
|
||||
std::string thumb16_ADD_imm_t2(Reg d_n, Imm8 imm8) {
|
||||
return Common::StringFromFormat("adds %s, #%u", RegStr(d_n), imm8);
|
||||
}
|
||||
|
||||
std::string thumb1_SUB_imm_t2(Reg d_n, Imm8 imm8) {
|
||||
std::string thumb16_SUB_imm_t2(Reg d_n, Imm8 imm8) {
|
||||
return Common::StringFromFormat("subs %s, #%u", RegStr(d_n), imm8);
|
||||
}
|
||||
|
||||
std::string thumb1_AND_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_AND_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("ands %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_EOR_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_EOR_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("eors %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_LSL_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_LSL_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("lsls %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_LSR_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_LSR_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("lsrs %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_ASR_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_ASR_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("asrs %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_ADC_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_ADC_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("adcs %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_SBC_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_SBC_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("sbcs %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_ROR_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_ROR_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("rors %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_TST_reg(Reg m, Reg n) {
|
||||
std::string thumb16_TST_reg(Reg m, Reg n) {
|
||||
return Common::StringFromFormat("tst %s, %s", RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_RSB_imm(Reg n, Reg d) {
|
||||
std::string thumb16_RSB_imm(Reg n, Reg d) {
|
||||
// Pre-UAL syntax: NEGS <Rd>, <Rn>
|
||||
return Common::StringFromFormat("rsbs %s, %s, #0", RegStr(d), RegStr(n));
|
||||
}
|
||||
|
||||
std::string thumb1_CMP_reg_t1(Reg m, Reg n) {
|
||||
std::string thumb16_CMP_reg_t1(Reg m, Reg n) {
|
||||
return Common::StringFromFormat("cmp %s, %s", RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_CMN_reg(Reg m, Reg n) {
|
||||
std::string thumb16_CMN_reg(Reg m, Reg n) {
|
||||
return Common::StringFromFormat("cmn %s, %s", RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_ORR_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_ORR_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("orrs %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_BIC_reg(Reg m, Reg d_n) {
|
||||
std::string thumb16_BIC_reg(Reg m, Reg d_n) {
|
||||
return Common::StringFromFormat("bics %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_MVN_reg(Reg m, Reg d) {
|
||||
std::string thumb16_MVN_reg(Reg m, Reg d) {
|
||||
return Common::StringFromFormat("mvns %s, %s", RegStr(d), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_ADD_reg_t2(bool d_n_hi, Reg m, Reg d_n_lo) {
|
||||
std::string thumb16_ADD_reg_t2(bool d_n_hi, Reg m, Reg d_n_lo) {
|
||||
Reg d_n = d_n_hi ? (d_n_lo + 8) : d_n_lo;
|
||||
return Common::StringFromFormat("add %s, %s", RegStr(d_n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_CMP_reg_t2(bool n_hi, Reg m, Reg n_lo) {
|
||||
std::string thumb16_CMP_reg_t2(bool n_hi, Reg m, Reg n_lo) {
|
||||
Reg n = n_hi ? (n_lo + 8) : n_lo;
|
||||
return Common::StringFromFormat("cmp %s, %s", RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_MOV_reg(bool d_hi, Reg m, Reg d_lo) {
|
||||
std::string thumb16_MOV_reg(bool d_hi, Reg m, Reg d_lo) {
|
||||
Reg d = d_hi ? (d_lo + 8) : d_lo;
|
||||
return Common::StringFromFormat("mov %s, %s", RegStr(d), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_LDR_literal(Reg t, Imm8 imm8) {
|
||||
std::string thumb16_LDR_literal(Reg t, Imm8 imm8) {
|
||||
u32 imm32 = imm8 << 2;
|
||||
return Common::StringFromFormat("ldr %s, [pc, #%u]", RegStr(t), imm32);
|
||||
}
|
||||
|
||||
std::string thumb1_STR_reg(Reg m, Reg n, Reg t) {
|
||||
std::string thumb16_STR_reg(Reg m, Reg n, Reg t) {
|
||||
return Common::StringFromFormat("str %s, [%s, %s]", RegStr(t), RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_STRH_reg(Reg m, Reg n, Reg t) {
|
||||
std::string thumb16_STRH_reg(Reg m, Reg n, Reg t) {
|
||||
return Common::StringFromFormat("strh %s, [%s, %s]", RegStr(t), RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_STRB_reg(Reg m, Reg n, Reg t) {
|
||||
std::string thumb16_STRB_reg(Reg m, Reg n, Reg t) {
|
||||
return Common::StringFromFormat("strb %s, [%s, %s]", RegStr(t), RegStr(n), RegStr(m));
|
||||
}
|
||||
|
||||
std::string thumb1_LDR_imm_t1(Imm5 imm5, Reg n, Reg t) {
|
||||
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 thumb1_UDF() {
|
||||
std::string thumb16_UDF() {
|
||||
return Common::StringFromFormat("udf");
|
||||
}
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue