diff --git a/Examples/CustomDataSource/CustomDataSource.vcxproj b/Examples/CustomDataSource/CustomDataSource.vcxproj
index 2c8b641..6e9f686 100644
--- a/Examples/CustomDataSource/CustomDataSource.vcxproj
+++ b/Examples/CustomDataSource/CustomDataSource.vcxproj
@@ -69,19 +69,19 @@
true
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
true
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
diff --git a/Examples/Examples.sln b/Examples/Examples.sln
index 3f1cf9a..a700b31 100644
--- a/Examples/Examples.sln
+++ b/Examples/Examples.sln
@@ -3,54 +3,86 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio 2013
VisualStudioVersion = 12.0.30723.0
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SimpleDemo", "SimpleDemo\SimpleDemo.vcxproj", "{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "1 - Simple Demo", "SimpleDemo\SimpleDemo.vcxproj", "{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CustomDataSource", "CustomDataSource\CustomDataSource.vcxproj", "{EB0F5A04-EE14-4779-9B29-322876CD45C8}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "2 - Custom DataSource", "CustomDataSource\CustomDataSource.vcxproj", "{EB0F5A04-EE14-4779-9B29-322876CD45C8}"
EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SymbolResolver", "SymbolResolver\SymbolResolver.vcxproj", "{B6CA4362-2714-451C-8063-12195ABD7CD7}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "3 - Symbol Resolver", "SymbolResolver\SymbolResolver.vcxproj", "{B6CA4362-2714-451C-8063-12195ABD7CD7}"
EndProject
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "VerteronDisassemblerEngine", "..\VerteronDisassemblerEngine\VerteronDisassemblerEngine.vcxproj", "{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}"
EndProject
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "4 - Performance Test", "PerformanceTest\PerformanceTest.vcxproj", "{4A0B7BE7-72C9-4A95-90CA-D56C50F10401}"
+EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
+ Debug|Mixed Platforms = Debug|Mixed Platforms
Debug|Win32 = Debug|Win32
Debug|x64 = Debug|x64
+ Release|Mixed Platforms = Release|Mixed Platforms
Release|Win32 = Release|Win32
Release|x64 = Release|x64
EndGlobalSection
GlobalSection(ProjectConfigurationPlatforms) = postSolution
+ {BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Debug|Win32.ActiveCfg = Debug|Win32
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Debug|Win32.Build.0 = Debug|Win32
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Debug|x64.ActiveCfg = Debug|x64
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Debug|x64.Build.0 = Debug|x64
+ {BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Release|Mixed Platforms.Build.0 = Release|Win32
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Release|Win32.ActiveCfg = Release|Win32
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Release|Win32.Build.0 = Release|Win32
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Release|x64.ActiveCfg = Release|x64
{BC5CDE9B-9F84-453E-8131-B56F67FD0E4D}.Release|x64.Build.0 = Release|x64
+ {EB0F5A04-EE14-4779-9B29-322876CD45C8}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {EB0F5A04-EE14-4779-9B29-322876CD45C8}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Debug|Win32.ActiveCfg = Debug|Win32
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Debug|Win32.Build.0 = Debug|Win32
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Debug|x64.ActiveCfg = Debug|x64
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Debug|x64.Build.0 = Debug|x64
+ {EB0F5A04-EE14-4779-9B29-322876CD45C8}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {EB0F5A04-EE14-4779-9B29-322876CD45C8}.Release|Mixed Platforms.Build.0 = Release|Win32
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Release|Win32.ActiveCfg = Release|Win32
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Release|Win32.Build.0 = Release|Win32
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Release|x64.ActiveCfg = Release|x64
{EB0F5A04-EE14-4779-9B29-322876CD45C8}.Release|x64.Build.0 = Release|x64
+ {B6CA4362-2714-451C-8063-12195ABD7CD7}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {B6CA4362-2714-451C-8063-12195ABD7CD7}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Debug|Win32.ActiveCfg = Debug|Win32
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Debug|Win32.Build.0 = Debug|Win32
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Debug|x64.ActiveCfg = Debug|x64
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Debug|x64.Build.0 = Debug|x64
+ {B6CA4362-2714-451C-8063-12195ABD7CD7}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {B6CA4362-2714-451C-8063-12195ABD7CD7}.Release|Mixed Platforms.Build.0 = Release|Win32
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Release|Win32.ActiveCfg = Release|Win32
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Release|Win32.Build.0 = Release|Win32
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Release|x64.ActiveCfg = Release|x64
{B6CA4362-2714-451C-8063-12195ABD7CD7}.Release|x64.Build.0 = Release|x64
+ {F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Debug|Mixed Platforms.Build.0 = Debug|Win32
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Debug|Win32.ActiveCfg = Debug|Win32
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Debug|Win32.Build.0 = Debug|Win32
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Debug|x64.ActiveCfg = Debug|x64
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Debug|x64.Build.0 = Debug|x64
+ {F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Release|Mixed Platforms.Build.0 = Release|Win32
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Release|Win32.ActiveCfg = Release|Win32
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Release|Win32.Build.0 = Release|Win32
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Release|x64.ActiveCfg = Release|x64
{F5C6F0A7-F75D-42BD-A8AB-A2D1D5F67099}.Release|x64.Build.0 = Release|x64
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Debug|Mixed Platforms.Build.0 = Debug|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Debug|Win32.ActiveCfg = Debug|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Debug|Win32.Build.0 = Debug|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Debug|x64.ActiveCfg = Debug|x64
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Debug|x64.Build.0 = Debug|x64
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Release|Mixed Platforms.ActiveCfg = Release|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Release|Mixed Platforms.Build.0 = Release|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Release|Win32.ActiveCfg = Release|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Release|Win32.Build.0 = Release|Win32
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Release|x64.ActiveCfg = Release|x64
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}.Release|x64.Build.0 = Release|x64
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
diff --git a/Examples/PerformanceTest/Main.cpp b/Examples/PerformanceTest/Main.cpp
new file mode 100644
index 0000000..bb1f9e6
--- /dev/null
+++ b/Examples/PerformanceTest/Main.cpp
@@ -0,0 +1,121 @@
+/**************************************************************************************************
+
+ Verteron Disassembler Engine
+ Version 1.0
+
+ Remarks : Freeware, Copyright must be included
+
+ Original Author : Florian Bernd
+ Modifications :
+
+ Last change : 29. October 2014
+
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in all
+ * copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+ * SOFTWARE.
+
+**************************************************************************************************/
+#include
+#include
+#include
+#include "VXDisassembler.h"
+#include
+
+using namespace Verteron;
+using namespace Disassembler;
+
+void testDecodingAndFormatting(uintptr_t baseAddress, PIMAGE_NT_HEADERS ntHeaders)
+{
+ VXInstructionInfo info;
+ VXInstructionDecoder decoder;
+ VXIntelInstructionFormatter formatter;
+ decoder.setDisassemblerMode(VXDisassemblerMode::M64BIT);
+ PIMAGE_SECTION_HEADER sectionHeader =
+ reinterpret_cast(
+ reinterpret_cast(ntHeaders) + sizeof(IMAGE_NT_HEADERS)
+ + ntHeaders->FileHeader.SizeOfOptionalHeader - sizeof(IMAGE_OPTIONAL_HEADER));
+ // Decode all code sections
+ for (unsigned int i = 0; i < ntHeaders->FileHeader.NumberOfSections; ++i)
+ {
+ if (sectionHeader->Characteristics & IMAGE_SCN_CNT_CODE)
+ {
+ std::cout << sectionHeader->SizeOfRawData / 1024 << " KiB" << std::endl;
+ VXMemoryDataSource input(reinterpret_cast(
+ baseAddress + sectionHeader->VirtualAddress), sectionHeader->SizeOfRawData);
+ decoder.setDataSource(&input);
+ decoder.setInstructionPointer(baseAddress + sectionHeader->VirtualAddress);
+ while (decoder.decodeInstruction(info))
+ {
+
+ }
+ }
+ sectionHeader++;
+ }
+}
+
+int _tmain(int argc, _TCHAR* argv[])
+{
+
+ // Find kernel32.dll in memory
+ void *ntdllBase = GetModuleHandle(L"kernel32.dll");
+ PIMAGE_DOS_HEADER dosHeader = static_cast(ntdllBase);
+ if (dosHeader->e_magic != IMAGE_DOS_SIGNATURE)
+ {
+ std::cout << "Error: kernel32.dll is corrupted.";
+ return 1;
+ }
+ PIMAGE_NT_HEADERS ntHeaders =
+ reinterpret_cast(
+ reinterpret_cast(dosHeader) + dosHeader->e_lfanew);
+ if (ntHeaders->Signature != IMAGE_NT_SIGNATURE)
+ {
+ std::cout << "Error: kernel32.dll is corrupted.";
+ return 1;
+ }
+
+ double pcFrequency = 0.0;
+ uint64_t pcStart = 0;
+ LARGE_INTEGER li;
+
+ // Start the performance counter
+ if (!QueryPerformanceFrequency(&li))
+ {
+ std::cout << "Error: QueryPerformanceFrequency failed.";
+ return 1;
+ }
+ pcFrequency = static_cast(li.QuadPart) / 1000.0;
+ if (!QueryPerformanceCounter(&li))
+ {
+ std::cout << "Error: QueryPerformanceCounter failed.";
+ return 1;
+ }
+ pcStart = li.QuadPart;
+ // Perform decoding test
+ testDecodingAndFormatting(reinterpret_cast(ntdllBase), ntHeaders);
+ // Stop the performance counter
+ if (!QueryPerformanceCounter(&li))
+ {
+ std::cout << "Error: QueryPerformanceCounter failed.";
+ return 1;
+ }
+ std::cout << "Time: " << static_cast(li.QuadPart - pcStart) / pcFrequency
+ << std::endl;
+
+ std::cin.get();
+
+ return 0;
+}
diff --git a/Examples/PerformanceTest/PerformanceTest.vcxproj b/Examples/PerformanceTest/PerformanceTest.vcxproj
new file mode 100644
index 0000000..87e34c4
--- /dev/null
+++ b/Examples/PerformanceTest/PerformanceTest.vcxproj
@@ -0,0 +1,157 @@
+
+
+
+
+ Debug
+ Win32
+
+
+ Debug
+ x64
+
+
+ Release
+ Win32
+
+
+ Release
+ x64
+
+
+
+ {4A0B7BE7-72C9-4A95-90CA-D56C50F10401}
+ Win32Proj
+ PerformanceTest
+ 4 - Performance Test
+
+
+
+ Application
+ true
+ v120
+ Unicode
+
+
+ Application
+ true
+ v120
+ Unicode
+
+
+ Application
+ false
+ v120
+ true
+ Unicode
+
+
+ Application
+ false
+ v120
+ true
+ Unicode
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ true
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
+
+
+ true
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
+
+
+ false
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
+
+
+ false
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+
+
+
+
+
+
+ Level3
+ Disabled
+ WIN32;_DEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+ Level3
+
+
+ MaxSpeed
+ true
+ true
+ WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions)
+
+
+ Console
+ true
+ true
+ true
+
+
+
+
+
+
+
+ {f5c6f0a7-f75d-42bd-a8ab-a2d1d5f67099}
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Examples/PerformanceTest/PerformanceTest.vcxproj.filters b/Examples/PerformanceTest/PerformanceTest.vcxproj.filters
new file mode 100644
index 0000000..d3e9077
--- /dev/null
+++ b/Examples/PerformanceTest/PerformanceTest.vcxproj.filters
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Examples/SimpleDemo/SimpleDemo.vcxproj b/Examples/SimpleDemo/SimpleDemo.vcxproj
index 9b7971d..15332e3 100644
--- a/Examples/SimpleDemo/SimpleDemo.vcxproj
+++ b/Examples/SimpleDemo/SimpleDemo.vcxproj
@@ -69,19 +69,19 @@
true
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
true
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
diff --git a/Examples/SymbolResolver/SymbolResolver.vcxproj b/Examples/SymbolResolver/SymbolResolver.vcxproj
index fab1ded..adcc661 100644
--- a/Examples/SymbolResolver/SymbolResolver.vcxproj
+++ b/Examples/SymbolResolver/SymbolResolver.vcxproj
@@ -22,7 +22,7 @@
{B6CA4362-2714-451C-8063-12195ABD7CD7}
Win32Proj
SymbolResolver
- 3 - SymbolResolver
+ 3 - Symbol Resolver
@@ -69,19 +69,19 @@
true
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
true
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\..\VerteronDisassemblerEngine\;$(IncludePath)
diff --git a/OptableGenerator/OptableGenerator.vcxproj b/OptableGenerator/OptableGenerator.vcxproj
index 1635741..f194f5b 100644
--- a/OptableGenerator/OptableGenerator.vcxproj
+++ b/OptableGenerator/OptableGenerator.vcxproj
@@ -68,19 +68,19 @@
true
- ../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\VerteronDisassemblerEngine\;$(IncludePath)
true
- ../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\VerteronDisassemblerEngine\;$(IncludePath)
false
- ../VerteronDisassemblerEngine/;$(IncludePath)
+ ..\VerteronDisassemblerEngine\;$(IncludePath)
diff --git a/VerteronDisassemblerEngine/VXInstructionDecoder.cpp b/VerteronDisassemblerEngine/VXInstructionDecoder.cpp
index 492c39c..16c3552 100644
--- a/VerteronDisassemblerEngine/VXInstructionDecoder.cpp
+++ b/VerteronDisassemblerEngine/VXInstructionDecoder.cpp
@@ -493,7 +493,7 @@ bool VXInstructionDecoder::decodeOperands(VXInstructionInfo& info)
{
if (info.operand[i - 1].type != VXOperandType::NONE)
{
- info.operand[i - 1].access_mode = VXOperandAccessMode::READ;
+ info.operand[i].access_mode = VXOperandAccessMode::READ;
if (!decodeOperand(info, info.operand[i], info.instrDefinition->operand[i].type,
info.instrDefinition->operand[i].size))
{
@@ -502,6 +502,7 @@ bool VXInstructionDecoder::decodeOperands(VXInstructionInfo& info)
}
}
// Update operand access modes
+ info.operand[0].access_mode = VXOperandAccessMode::READ;
if (info.operand[0].type != VXOperandType::NONE)
{
if (info.instrDefinition->flags & IDF_OPERAND1_WRITE)
diff --git a/VerteronDisassemblerEngine/VXInstructionFormatter.cpp b/VerteronDisassemblerEngine/VXInstructionFormatter.cpp
index ef2617b..aca7cc8 100644
--- a/VerteronDisassemblerEngine/VXInstructionFormatter.cpp
+++ b/VerteronDisassemblerEngine/VXInstructionFormatter.cpp
@@ -256,11 +256,12 @@ void VXIntelInstructionFormatter::formatOperand(const VXInstructionInfo &info,
outputAppendFormatted("%s:", registerToString(info.segment));
}
outputAppend("[");
- if (operand.base == VXRegister::RIP)
- {
- // TODO: Add option
- outputAppendAddress(info, calcAbsoluteTarget(info, operand));
- } else
+ // TODO: Fix zero sized memory operands (lea eax, [rip+1] | lidt [0])
+ //if (operand.base == VXRegister::RIP)
+ //{
+ // // TODO: Add option
+ // outputAppendAddress(info, calcAbsoluteTarget(info, operand));
+ //} else
{
if (operand.base != VXRegister::NONE)
{