mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-04 10:02:58 +00:00
Label A32 specific code appropriately
This commit is contained in:
@@ -1,34 +1,31 @@
|
||||
add_executable(dynarmic_tests
|
||||
# Source files
|
||||
arm/fuzz_arm.cpp
|
||||
arm/fuzz_thumb.cpp
|
||||
arm/test_arm_disassembler.cpp
|
||||
arm/test_thumb_instructions.cpp
|
||||
main.cpp
|
||||
rand_int.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_dec.cpp
|
||||
skyeye_interpreter/dyncom/arm_dyncom_dec.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_interpreter.cpp
|
||||
skyeye_interpreter/dyncom/arm_dyncom_interpreter.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_run.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_thumb.cpp
|
||||
skyeye_interpreter/dyncom/arm_dyncom_thumb.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_trans.cpp
|
||||
skyeye_interpreter/dyncom/arm_dyncom_trans.h
|
||||
skyeye_interpreter/skyeye_common/arm_regformat.h
|
||||
skyeye_interpreter/skyeye_common/armstate.cpp
|
||||
skyeye_interpreter/skyeye_common/armstate.h
|
||||
skyeye_interpreter/skyeye_common/armsupp.cpp
|
||||
skyeye_interpreter/skyeye_common/armsupp.h
|
||||
skyeye_interpreter/skyeye_common/vfp/asm_vfp.h
|
||||
skyeye_interpreter/skyeye_common/vfp/vfp.cpp
|
||||
skyeye_interpreter/skyeye_common/vfp/vfp.h
|
||||
skyeye_interpreter/skyeye_common/vfp/vfp_helper.h
|
||||
skyeye_interpreter/skyeye_common/vfp/vfpdouble.cpp
|
||||
skyeye_interpreter/skyeye_common/vfp/vfpinstr.cpp
|
||||
skyeye_interpreter/skyeye_common/vfp/vfpsingle.cpp
|
||||
|
||||
# Header files
|
||||
rand_int.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_dec.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_interpreter.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_run.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_thumb.h
|
||||
skyeye_interpreter/dyncom/arm_dyncom_trans.h
|
||||
skyeye_interpreter/skyeye_common/arm_regformat.h
|
||||
skyeye_interpreter/skyeye_common/armstate.h
|
||||
skyeye_interpreter/skyeye_common/armsupp.h
|
||||
skyeye_interpreter/skyeye_common/vfp/asm_vfp.h
|
||||
skyeye_interpreter/skyeye_common/vfp/vfp.h
|
||||
skyeye_interpreter/skyeye_common/vfp/vfp_helper.h
|
||||
)
|
||||
|
||||
include(CreateDirectoryGroups)
|
||||
|
||||
@@ -19,10 +19,13 @@
|
||||
|
||||
#include "common/bit_util.h"
|
||||
#include "common/common_types.h"
|
||||
#include "frontend/disassembler/disassembler.h"
|
||||
#include "frontend/A32/disassembler/disassembler.h"
|
||||
#include "frontend/A32/FPSCR.h"
|
||||
#include "frontend/A32/location_descriptor.h"
|
||||
#include "frontend/A32/PSR.h"
|
||||
#include "frontend/A32/translate/translate.h"
|
||||
#include "frontend/ir/basic_block.h"
|
||||
#include "frontend/ir/location_descriptor.h"
|
||||
#include "frontend/translate/translate.h"
|
||||
#include "ir_opt/passes.h"
|
||||
#include "rand_int.h"
|
||||
#include "skyeye_interpreter/dyncom/arm_dyncom_interpreter.h"
|
||||
@@ -270,12 +273,12 @@ void FuzzJitArm(const size_t instruction_count, const size_t instructions_to_exe
|
||||
|
||||
printf("\nInstruction Listing: \n");
|
||||
for (size_t i = 0; i < instruction_count; i++) {
|
||||
printf("%x: %s\n", code_mem[i], Dynarmic::Arm::DisassembleArm(code_mem[i]).c_str());
|
||||
printf("%x: %s\n", code_mem[i], Dynarmic::A32::DisassembleArm(code_mem[i]).c_str());
|
||||
}
|
||||
|
||||
printf("\nInitial Register Listing: \n");
|
||||
for (int i = 0; i <= 15; i++) {
|
||||
auto reg = Dynarmic::Arm::RegToString(static_cast<Dynarmic::Arm::Reg>(i));
|
||||
auto reg = Dynarmic::A32::RegToString(static_cast<Dynarmic::A32::Reg>(i));
|
||||
printf("%4s: %08x\n", reg, initial_regs[i]);
|
||||
}
|
||||
printf("CPSR: %08x\n", initial_cpsr);
|
||||
@@ -287,7 +290,7 @@ void FuzzJitArm(const size_t instruction_count, const size_t instructions_to_exe
|
||||
printf("\nFinal Register Listing: \n");
|
||||
printf(" interp jit\n");
|
||||
for (int i = 0; i <= 15; i++) {
|
||||
auto reg = Dynarmic::Arm::RegToString(static_cast<Dynarmic::Arm::Reg>(i));
|
||||
auto reg = Dynarmic::A32::RegToString(static_cast<Dynarmic::A32::Reg>(i));
|
||||
printf("%4s: %08x %08x %s\n", reg, interp.Reg[i], jit.Regs()[i], interp.Reg[i] != jit.Regs()[i] ? "*" : "");
|
||||
}
|
||||
printf("CPSR: %08x %08x %s\n", interp.Cpsr, jit.Cpsr(), interp.Cpsr != jit.Cpsr() ? "*" : "");
|
||||
@@ -308,8 +311,8 @@ void FuzzJitArm(const size_t instruction_count, const size_t instructions_to_exe
|
||||
|
||||
size_t num_insts = 0;
|
||||
while (num_insts < instructions_to_execute_count) {
|
||||
Dynarmic::IR::LocationDescriptor descriptor = {u32(num_insts * 4), Dynarmic::Arm::PSR{}, Dynarmic::Arm::FPSCR{}};
|
||||
Dynarmic::IR::Block ir_block = Dynarmic::Arm::Translate(descriptor, &MemoryReadCode);
|
||||
Dynarmic::A32::LocationDescriptor descriptor = {u32(num_insts * 4), Dynarmic::A32::PSR{}, Dynarmic::A32::FPSCR{}};
|
||||
Dynarmic::IR::Block ir_block = Dynarmic::A32::Translate(descriptor, &MemoryReadCode);
|
||||
Dynarmic::Optimization::GetSetElimination(ir_block);
|
||||
Dynarmic::Optimization::DeadCodeElimination(ir_block);
|
||||
Dynarmic::Optimization::VerificationPass(ir_block);
|
||||
|
||||
@@ -18,9 +18,12 @@
|
||||
|
||||
#include "common/bit_util.h"
|
||||
#include "common/common_types.h"
|
||||
#include "frontend/disassembler/disassembler.h"
|
||||
#include "frontend/A32/disassembler/disassembler.h"
|
||||
#include "frontend/A32/FPSCR.h"
|
||||
#include "frontend/A32/location_descriptor.h"
|
||||
#include "frontend/A32/PSR.h"
|
||||
#include "frontend/A32/translate/translate.h"
|
||||
#include "frontend/ir/basic_block.h"
|
||||
#include "frontend/translate/translate.h"
|
||||
#include "ir_opt/passes.h"
|
||||
#include "rand_int.h"
|
||||
#include "skyeye_interpreter/dyncom/arm_dyncom_interpreter.h"
|
||||
@@ -230,7 +233,7 @@ void FuzzJitThumb(const size_t instruction_count, const size_t instructions_to_e
|
||||
|
||||
printf("\nInstruction Listing: \n");
|
||||
for (size_t i = 0; i < instruction_count; i++) {
|
||||
printf("%s\n", Dynarmic::Arm::DisassembleThumb16(code_mem[i]).c_str());
|
||||
printf("%s\n", Dynarmic::A32::DisassembleThumb16(code_mem[i]).c_str());
|
||||
}
|
||||
|
||||
printf("\nInitial Register Listing: \n");
|
||||
@@ -255,13 +258,13 @@ void FuzzJitThumb(const size_t instruction_count, const size_t instructions_to_e
|
||||
printf("%zu [%x] = %" PRIu64 "\n", record.size, record.address, record.data);
|
||||
}
|
||||
|
||||
Dynarmic::Arm::PSR cpsr;
|
||||
Dynarmic::A32::PSR cpsr;
|
||||
cpsr.T(true);
|
||||
|
||||
size_t num_insts = 0;
|
||||
while (num_insts < instructions_to_execute_count) {
|
||||
Dynarmic::IR::LocationDescriptor descriptor = {u32(num_insts * 4), cpsr, Dynarmic::Arm::FPSCR{}};
|
||||
Dynarmic::IR::Block ir_block = Dynarmic::Arm::Translate(descriptor, &MemoryReadCode);
|
||||
Dynarmic::A32::LocationDescriptor descriptor = {u32(num_insts * 4), cpsr, Dynarmic::A32::FPSCR{}};
|
||||
Dynarmic::IR::Block ir_block = Dynarmic::A32::Translate(descriptor, &MemoryReadCode);
|
||||
Dynarmic::Optimization::GetSetElimination(ir_block);
|
||||
Dynarmic::Optimization::DeadCodeElimination(ir_block);
|
||||
Dynarmic::Optimization::VerificationPass(ir_block);
|
||||
|
||||
@@ -6,9 +6,9 @@
|
||||
|
||||
#include <catch.hpp>
|
||||
|
||||
#include "frontend/disassembler/disassembler.h"
|
||||
#include "frontend/A32/disassembler/disassembler.h"
|
||||
|
||||
using Dynarmic::Arm::DisassembleArm;
|
||||
using Dynarmic::A32::DisassembleArm;
|
||||
|
||||
TEST_CASE("Disassemble branch instructions", "[arm][disassembler]") {
|
||||
REQUIRE(DisassembleArm(0xEAFFFFFE) == "b +#0");
|
||||
|
||||
Reference in New Issue
Block a user