Example of Capstone for both libxenia and the UI. Going to shuffle around.
This commit is contained in:
140
src/Xenia.Debug.Native/Xenia.Debug.Native.vcxproj
Normal file
140
src/Xenia.Debug.Native/Xenia.Debug.Native.vcxproj
Normal file
@@ -0,0 +1,140 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" ToolsVersion="14.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup Label="ProjectConfigurations">
|
||||
<ProjectConfiguration Include="Debug|x64">
|
||||
<Configuration>Debug</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
<ProjectConfiguration Include="Release|x64">
|
||||
<Configuration>Release</Configuration>
|
||||
<Platform>x64</Platform>
|
||||
</ProjectConfiguration>
|
||||
</ItemGroup>
|
||||
<PropertyGroup Label="Globals">
|
||||
<ProjectGuid>{5AE85790-F2EA-4077-8953-825E9C0AADE9}</ProjectGuid>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<Keyword>ManagedCProj</Keyword>
|
||||
<RootNamespace>XeniaDebugNative</RootNamespace>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>true</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||
<ConfigurationType>DynamicLibrary</ConfigurationType>
|
||||
<UseDebugLibraries>false</UseDebugLibraries>
|
||||
<PlatformToolset>v140</PlatformToolset>
|
||||
<CLRSupport>true</CLRSupport>
|
||||
<CharacterSet>Unicode</CharacterSet>
|
||||
</PropertyGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||
<ImportGroup Label="ExtensionSettings">
|
||||
</ImportGroup>
|
||||
<ImportGroup Label="Shared">
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Common.props" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Debug.props" />
|
||||
</ImportGroup>
|
||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Common.props" />
|
||||
<Import Project="..\..\build\Xenia.Cpp.x64.Release.props" />
|
||||
</ImportGroup>
|
||||
<PropertyGroup Label="UserMacros" />
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<LinkIncremental>false</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<Optimization>Disabled</Optimization>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\third_party\capstone\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>
|
||||
</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||
<ClCompile>
|
||||
<WarningLevel>Level2</WarningLevel>
|
||||
<RuntimeTypeInfo>true</RuntimeTypeInfo>
|
||||
<CompileAs>CompileAsCpp</CompileAs>
|
||||
<AdditionalIncludeDirectories>$(SolutionDir)\third_party\capstone\include\;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||
<RuntimeLibrary>
|
||||
</RuntimeLibrary>
|
||||
</ClCompile>
|
||||
<Link>
|
||||
<GenerateDebugInformation>true</GenerateDebugInformation>
|
||||
<AdditionalDependencies>
|
||||
</AdditionalDependencies>
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86BaseInfo.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Disassembler.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoderCommon.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86InstPrinter.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Mapping.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\cs_priv.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\include\capstone.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\include\platform.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\include\x86.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\LEB128.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MathExtras.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCDisassembler.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCFixedLenDisassembler.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInst.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInstrDesc.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\MCRegisterInfo.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\myinttypes.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\SStream.h" />
|
||||
<ClInclude Include="..\..\third_party\capstone\utils.h" />
|
||||
<ClInclude Include="x64_disassembler.h" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Disassembler.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86IntelInstPrinter.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Mapping.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Module.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\cs.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInst.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInstrDesc.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\MCRegisterInfo.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\SStream.c" />
|
||||
<ClCompile Include="..\..\third_party\capstone\utils.c" />
|
||||
<ClCompile Include="assembly_info.cc" />
|
||||
<ClCompile Include="x64_disassembler.cc" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo_reduce.inc" />
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenRegisterInfo.inc" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
</ImportGroup>
|
||||
</Project>
|
||||
170
src/Xenia.Debug.Native/Xenia.Debug.Native.vcxproj.filters
Normal file
170
src/Xenia.Debug.Native/Xenia.Debug.Native.vcxproj.filters
Normal file
@@ -0,0 +1,170 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<ItemGroup>
|
||||
<Filter Include="third_party">
|
||||
<UniqueIdentifier>{f0462696-4abd-4dc9-8290-aafff5ca6158}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src">
|
||||
<UniqueIdentifier>{1a3b1c52-32cb-477e-9008-f2f9a6171c8c}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia">
|
||||
<UniqueIdentifier>{5fb51b29-2462-49de-89c1-e332aafa0ca9}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia\debug">
|
||||
<UniqueIdentifier>{15585f2e-55a4-4af5-bb24-6d6649d74ed0}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone">
|
||||
<UniqueIdentifier>{920bc92f-e430-4c48-86dd-1a697c9a5fd1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone\include">
|
||||
<UniqueIdentifier>{d26b9a34-94fd-493b-841e-2ae2561bc584}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone\arch">
|
||||
<UniqueIdentifier>{c9adeb1a-189d-4877-9bbd-c9948401b63e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="third_party\capstone\arch\X86">
|
||||
<UniqueIdentifier>{4e8ea226-a18e-413a-95bd-6b3e5f4f8460}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\Xenia.Debug.Native">
|
||||
<UniqueIdentifier>{fc34f72d-e3c6-4fe7-9645-7b422ffaad57}</UniqueIdentifier>
|
||||
</Filter>
|
||||
<Filter Include="src\xenia\debug\native">
|
||||
<UniqueIdentifier>{e530b0a2-9f4a-4b85-aee8-7185042251b1}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="..\..\third_party\capstone\cs_priv.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\LEB128.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MathExtras.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCDisassembler.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCFixedLenDisassembler.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInst.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCInstrDesc.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\MCRegisterInfo.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\myinttypes.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\SStream.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\utils.h">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\include\capstone.h">
|
||||
<Filter>third_party\capstone\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\include\platform.h">
|
||||
<Filter>third_party\capstone\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\include\x86.h">
|
||||
<Filter>third_party\capstone\include</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86BaseInfo.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Disassembler.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoderCommon.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86InstPrinter.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="..\..\third_party\capstone\arch\X86\X86Mapping.h">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="x64_disassembler.h">
|
||||
<Filter>src\Xenia.Debug.Native</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="..\..\third_party\capstone\cs.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInst.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\MCInstrDesc.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\MCRegisterInfo.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\SStream.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\utils.c">
|
||||
<Filter>third_party\capstone</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Disassembler.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86DisassemblerDecoder.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86IntelInstPrinter.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Mapping.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="..\..\third_party\capstone\arch\X86\X86Module.c">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="x64_disassembler.cc">
|
||||
<Filter>src\Xenia.Debug.Native</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="assembly_info.cc">
|
||||
<Filter>src\Xenia.Debug.Native</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenAsmWriter1_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenDisassemblerTables_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenInstrInfo_reduce.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
<None Include="..\..\third_party\capstone\arch\X86\X86GenRegisterInfo.inc">
|
||||
<Filter>third_party\capstone\arch\X86</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
45
src/Xenia.Debug.Native/assembly_info.cc
Normal file
45
src/Xenia.Debug.Native/assembly_info.cc
Normal file
@@ -0,0 +1,45 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
using namespace System;
|
||||
using namespace System::Reflection;
|
||||
using namespace System::Runtime::CompilerServices;
|
||||
using namespace System::Runtime::InteropServices;
|
||||
using namespace System::Security::Permissions;
|
||||
|
||||
//
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
//
|
||||
[assembly:AssemblyTitleAttribute(L"Xenia.Debug.Native")];
|
||||
[assembly:AssemblyDescriptionAttribute(L"")];
|
||||
[assembly:AssemblyConfigurationAttribute(L"")];
|
||||
[assembly:AssemblyCompanyAttribute(L"")];
|
||||
[assembly:AssemblyProductAttribute(L"Xenia.Debug.Native")];
|
||||
[assembly:AssemblyCopyrightAttribute(L"Copyright (c) Ben Vanik 2015")];
|
||||
[assembly:AssemblyTrademarkAttribute(L"")];
|
||||
[assembly:AssemblyCultureAttribute(L"")];
|
||||
|
||||
//
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the value or you can default the Revision and Build Numbers
|
||||
// by using the '*' as shown below:
|
||||
|
||||
[assembly:AssemblyVersionAttribute("1.0.*")];
|
||||
|
||||
[assembly:ComVisible(false)];
|
||||
|
||||
[assembly:CLSCompliantAttribute(true)];
|
||||
52
src/Xenia.Debug.Native/x64_disassembler.cc
Normal file
52
src/Xenia.Debug.Native/x64_disassembler.cc
Normal file
@@ -0,0 +1,52 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#include "Xenia.Debug.Native/x64_disassembler.h"
|
||||
|
||||
#include "third_party/capstone/include/capstone.h"
|
||||
#include "third_party/capstone/include/x86.h"
|
||||
|
||||
namespace Xenia {
|
||||
namespace Debug {
|
||||
namespace Native {
|
||||
|
||||
using namespace System;
|
||||
using namespace System::Text;
|
||||
|
||||
X64Disassembler::X64Disassembler()
|
||||
: capstone_handle_(0), string_builder_(gcnew StringBuilder(16 * 1024)) {
|
||||
uintptr_t capstone_handle;
|
||||
if (cs_open(CS_ARCH_X86, CS_MODE_64, &capstone_handle) != CS_ERR_OK) {
|
||||
System::Diagnostics::Debug::Fail("Failed to initialize capstone");
|
||||
return;
|
||||
}
|
||||
capstone_handle_ = capstone_handle;
|
||||
cs_option(capstone_handle_, CS_OPT_SYNTAX, CS_OPT_SYNTAX_INTEL);
|
||||
cs_option(capstone_handle_, CS_OPT_DETAIL, CS_OPT_OFF);
|
||||
}
|
||||
|
||||
X64Disassembler::~X64Disassembler() {
|
||||
if (capstone_handle_) {
|
||||
pin_ptr<uintptr_t> capstone_handle = &capstone_handle_;
|
||||
cs_close(capstone_handle);
|
||||
}
|
||||
}
|
||||
|
||||
String^ X64Disassembler::GenerateString(IntPtr code_address,
|
||||
size_t code_size) {
|
||||
string_builder_->Clear();
|
||||
|
||||
//
|
||||
|
||||
return string_builder_->ToString();
|
||||
}
|
||||
|
||||
} // namespace Native
|
||||
} // namespace Debug
|
||||
} // namespace Xenia
|
||||
38
src/Xenia.Debug.Native/x64_disassembler.h
Normal file
38
src/Xenia.Debug.Native/x64_disassembler.h
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
******************************************************************************
|
||||
* Xenia : Xbox 360 Emulator Research Project *
|
||||
******************************************************************************
|
||||
* Copyright 2015 Ben Vanik. All rights reserved. *
|
||||
* Released under the BSD license - see LICENSE in the root for more details. *
|
||||
******************************************************************************
|
||||
*/
|
||||
|
||||
#ifndef XENIA_DEBUG_NATIVE_X64_DISASSEMBLER_H_
|
||||
#define XENIA_DEBUG_NATIVE_X64_DISASSEMBLER_H_
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace Xenia {
|
||||
namespace Debug {
|
||||
namespace Native {
|
||||
|
||||
using namespace System;
|
||||
using namespace System::Text;
|
||||
|
||||
public ref class X64Disassembler {
|
||||
public:
|
||||
X64Disassembler();
|
||||
~X64Disassembler();
|
||||
|
||||
String^ GenerateString(IntPtr code_address, size_t code_size);
|
||||
|
||||
private:
|
||||
uintptr_t capstone_handle_;
|
||||
StringBuilder^ string_builder_;
|
||||
};
|
||||
|
||||
} // namespace Native
|
||||
} // namespace Debug
|
||||
} // namespace Xenia
|
||||
|
||||
#endif // XENIA_DEBUG_NATIVE_X64_DISASSEMBLER_H_
|
||||
Reference in New Issue
Block a user