mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-01-06 22:48:25 +01:00
A64/translate: Add TranslateSingleInstruction function
This commit is contained in:
parent
aa74a8130b
commit
61125d6dd1
9 changed files with 52 additions and 22 deletions
|
|
@ -23,7 +23,7 @@ namespace {
|
|||
struct ThumbTranslatorVisitor final {
|
||||
using instruction_return_type = bool;
|
||||
|
||||
explicit ThumbTranslatorVisitor(LocationDescriptor descriptor) : ir(descriptor) {
|
||||
explicit ThumbTranslatorVisitor(IR::Block& block, LocationDescriptor descriptor) : ir(block, descriptor) {
|
||||
ASSERT_MSG(descriptor.TFlag(), "The processor must be in Thumb mode");
|
||||
}
|
||||
|
||||
|
|
@ -878,7 +878,8 @@ std::tuple<u32, ThumbInstSize> ReadThumbInstruction(u32 arm_pc, MemoryReadCodeFu
|
|||
} // local namespace
|
||||
|
||||
IR::Block TranslateThumb(LocationDescriptor descriptor, MemoryReadCodeFuncType memory_read_code) {
|
||||
ThumbTranslatorVisitor visitor{descriptor};
|
||||
IR::Block block{descriptor};
|
||||
ThumbTranslatorVisitor visitor{block, descriptor};
|
||||
|
||||
bool should_continue = true;
|
||||
while (should_continue) {
|
||||
|
|
@ -906,12 +907,12 @@ IR::Block TranslateThumb(LocationDescriptor descriptor, MemoryReadCodeFuncType m
|
|||
|
||||
s32 advance_pc = (inst_size == ThumbInstSize::Thumb16) ? 2 : 4;
|
||||
visitor.ir.current_location = visitor.ir.current_location.AdvancePC(advance_pc);
|
||||
visitor.ir.block.CycleCount()++;
|
||||
block.CycleCount()++;
|
||||
}
|
||||
|
||||
visitor.ir.block.SetEndLocation(visitor.ir.current_location);
|
||||
block.SetEndLocation(visitor.ir.current_location);
|
||||
|
||||
return std::move(visitor.ir.block);
|
||||
return block;
|
||||
}
|
||||
|
||||
} // namespace A32
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue