Browse Source
[dynarmic] nuke zydis/zycore out of orbit forever (#2893)
[dynarmic] nuke zydis/zycore out of orbit forever (#2893)
LLVM does what Zydisn't Signed-off-by: lizzie <lizzie@eden-emu.dev> Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2893 Reviewed-by: crueter <crueter@eden-emu.dev> Reviewed-by: MaranBr <maranbr@eden-emu.dev> Co-authored-by: lizzie <lizzie@eden-emu.dev> Co-committed-by: lizzie <lizzie@eden-emu.dev>pull/2898/head
committed by
crueter
No known key found for this signature in database
GPG Key ID: 425ACD2D4830EBC6
28 changed files with 56 additions and 268 deletions
-
13docs/Deps.md
-
2shell.nix
-
2src/dynarmic/CMakeLists.txt
-
1src/dynarmic/CMakeModules/dynarmicConfig.cmake.in
-
27src/dynarmic/README.md
-
14src/dynarmic/externals/CMakeLists.txt
-
19src/dynarmic/externals/cpmfile.json
-
8src/dynarmic/src/dynarmic/CMakeLists.txt
-
8src/dynarmic/src/dynarmic/backend/arm64/a32_interface.cpp
-
14src/dynarmic/src/dynarmic/backend/arm64/a64_interface.cpp
-
6src/dynarmic/src/dynarmic/backend/arm64/address_space.cpp
-
3src/dynarmic/src/dynarmic/backend/arm64/address_space.h
-
8src/dynarmic/src/dynarmic/backend/riscv64/a32_interface.cpp
-
4src/dynarmic/src/dynarmic/backend/x64/a32_emit_x64_memory.cpp
-
16src/dynarmic/src/dynarmic/backend/x64/a32_interface.cpp
-
4src/dynarmic/src/dynarmic/backend/x64/a64_emit_x64_memory.cpp
-
18src/dynarmic/src/dynarmic/backend/x64/a64_interface.cpp
-
8src/dynarmic/src/dynarmic/backend/x64/emit_x64_memory.cpp.inc
-
25src/dynarmic/src/dynarmic/common/llvm_disassemble.cpp
-
60src/dynarmic/src/dynarmic/common/x64_disassemble.cpp
-
24src/dynarmic/src/dynarmic/common/x64_disassemble.h
-
14src/dynarmic/src/dynarmic/interface/A32/a32.h
-
14src/dynarmic/src/dynarmic/interface/A64/a64.h
-
2src/dynarmic/tests/A32/fuzz_arm.cpp
-
2src/dynarmic/tests/A32/fuzz_thumb.cpp
-
2src/dynarmic/tests/A64/a64.cpp
-
2src/dynarmic/tests/A64/fuzz_with_unicorn.cpp
-
4src/dynarmic/tests/test_generator.cpp
@ -1,60 +0,0 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project
|
|||
// SPDX-License-Identifier: GPL-3.0-or-later
|
|||
|
|||
/* This file is part of the dynarmic project.
|
|||
* Copyright (c) 2021 MerryMage |
|||
* SPDX-License-Identifier: 0BSD |
|||
*/ |
|||
|
|||
#include "dynarmic/common/x64_disassemble.h"
|
|||
|
|||
#include <Zydis/Zydis.h>
|
|||
#include <fmt/printf.h>
|
|||
#include "dynarmic/common/common_types.h"
|
|||
|
|||
namespace Dynarmic::Common { |
|||
|
|||
void DumpDisassembledX64(const void* ptr, size_t size) { |
|||
ZydisDecoder decoder; |
|||
ZydisDecoderInit(&decoder, ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_STACK_WIDTH_64); |
|||
|
|||
ZydisFormatter formatter; |
|||
ZydisFormatterInit(&formatter, ZYDIS_FORMATTER_STYLE_INTEL); |
|||
|
|||
size_t offset = 0; |
|||
ZydisDecodedInstruction instruction; |
|||
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT]; |
|||
while (ZYAN_SUCCESS(ZydisDecoderDecodeFull(&decoder, static_cast<const char*>(ptr) + offset, size - offset, &instruction, operands))) { |
|||
fmt::print("{:016x} ", (u64)ptr + offset); |
|||
|
|||
char buffer[256]; |
|||
ZydisFormatterFormatInstruction(&formatter, &instruction, operands, instruction.operand_count_visible, buffer, sizeof(buffer), reinterpret_cast<u64>(ptr) + offset, ZYAN_NULL); |
|||
puts(buffer); |
|||
|
|||
offset += instruction.length; |
|||
} |
|||
} |
|||
|
|||
std::vector<std::string> DisassembleX64(const void* ptr, size_t size) { |
|||
std::vector<std::string> result; |
|||
ZydisDecoder decoder; |
|||
ZydisDecoderInit(&decoder, ZYDIS_MACHINE_MODE_LONG_64, ZYDIS_STACK_WIDTH_64); |
|||
|
|||
ZydisFormatter formatter; |
|||
ZydisFormatterInit(&formatter, ZYDIS_FORMATTER_STYLE_INTEL); |
|||
|
|||
size_t offset = 0; |
|||
ZydisDecodedInstruction instruction; |
|||
ZydisDecodedOperand operands[ZYDIS_MAX_OPERAND_COUNT]; |
|||
while (ZYAN_SUCCESS(ZydisDecoderDecodeFull(&decoder, static_cast<const char*>(ptr) + offset, size - offset, &instruction, operands))) { |
|||
char buffer[256]; |
|||
ZydisFormatterFormatInstruction(&formatter, &instruction, operands, instruction.operand_count_visible, buffer, sizeof(buffer), reinterpret_cast<u64>(ptr) + offset, ZYAN_NULL); |
|||
|
|||
result.push_back(fmt::format("{:016x} {}", (u64)ptr + offset, buffer)); |
|||
|
|||
offset += instruction.length; |
|||
} |
|||
|
|||
return result; |
|||
} |
|||
} // namespace Dynarmic::Common
|
|||
@ -1,24 +0,0 @@ |
|||
// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project |
|||
// SPDX-License-Identifier: GPL-3.0-or-later |
|||
|
|||
/* This file is part of the dynarmic project. |
|||
* Copyright (c) 2021 MerryMage |
|||
* SPDX-License-Identifier: 0BSD |
|||
*/ |
|||
|
|||
#pragma once |
|||
|
|||
#include <string> |
|||
#include <vector> |
|||
|
|||
#include "dynarmic/common/common_types.h" |
|||
|
|||
namespace Dynarmic::Common { |
|||
|
|||
void DumpDisassembledX64(const void* ptr, size_t size); |
|||
/** |
|||
* Disassemble `size' bytes from `ptr' and return the disassembled lines as a vector |
|||
* of strings. |
|||
*/ |
|||
std::vector<std::string> DisassembleX64(const void* ptr, size_t size); |
|||
} // namespace Dynarmic::Common |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue