Implement Thumb ADR instruction

This commit is contained in:
MerryMage
2016-07-18 09:25:33 +01:00
parent 24aa24b1bc
commit 28a201da16
4 changed files with 18 additions and 4 deletions

View File

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

View File

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