mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-02-18 22:42:58 +00:00
Implement Thumb ADR instruction
This commit is contained in:
@@ -9,7 +9,7 @@
|
||||
#include "frontend/decoder/arm.h"
|
||||
#include "frontend/ir/ir.h"
|
||||
#include "frontend/ir/ir_emitter.h"
|
||||
#include "translate.h"
|
||||
#include "frontend/translate/translate.h"
|
||||
|
||||
namespace Dynarmic {
|
||||
namespace Arm {
|
||||
|
||||
@@ -10,7 +10,7 @@
|
||||
#include "frontend/arm_types.h"
|
||||
#include "frontend/decoder/thumb16.h"
|
||||
#include "frontend/ir/ir_emitter.h"
|
||||
#include "translate.h"
|
||||
#include "frontend/translate/translate.h"
|
||||
|
||||
namespace Dynarmic {
|
||||
namespace Arm {
|
||||
@@ -440,6 +440,15 @@ struct ThumbTranslatorVisitor final {
|
||||
return true;
|
||||
}
|
||||
|
||||
bool thumb16_ADR(Reg d, Imm8 imm8) {
|
||||
u32 imm32 = imm8 << 2;
|
||||
// ADR <Rd>, <label>
|
||||
// Rd cannot encode R15.
|
||||
auto result = ir.Imm32(ir.AlignPC(4) + imm32);
|
||||
ir.SetRegister(d, result);
|
||||
return true;
|
||||
}
|
||||
|
||||
bool thumb16_SXTH(Reg m, Reg d) {
|
||||
// SXTH <Rd>, <Rm>
|
||||
// Rd cannot encode R15.
|
||||
|
||||
Reference in New Issue
Block a user