diff --git a/Basic Live View.html b/Basic Live View.html index 57b3ad6..37718ad 100644 --- a/Basic Live View.html +++ b/Basic Live View.html @@ -128,7 +128,7 @@

Full X86 Disassembler by Damian Recoskie.

-

Version 2.0 Beta.

+

Version 2.

diff --git a/DisassembleX86-64.js b/DisassembleX86-64.js index 2c4cd62..881443b 100644 --- a/DisassembleX86-64.js +++ b/DisassembleX86-64.js @@ -1279,12 +1279,12 @@ const Operands = [ [["0601","0601","0601","0601","","","",""],""], "", [ - [["0A0B0708","","",""],["0A0B060B","","",""],["0A0B0708","","",""],["0A0B0708","","",""]], + [["0A0B07080110","","",""],["0A0B07100110","","",""],["0A0B07080110","","",""],["0A0B07080110","","",""]], ["",["0A0B060B","","",""],["0A0B07080110","","",""],["0A0B07080110","","",""]] ], [ - [["07080A0B","","",""],["060B0A0B","","",""],["0A0B0708","","",""],["0A0B0708","","",""]], - ["",["060B0A0B","","",""],"",["0A0B07080110","","",""]] + [["07080A0B0110","","",""],["07100A0B0110","","",""],["0A0B07080110","","",""],["0A0B07080110","","",""]], + ["",["0A0B060B","","",""],"",["0A0B07080110","","",""]] ], "","","", "070E", @@ -3306,6 +3306,7 @@ and the higher four bits is the selected register. function Decode_ModRM_SIB_Address( ModRM, BySize, Setting ) { + var out = ""; //the variable out is what stores the decoded address pointer, or Register if Register mode. //------------------------------------------------------------------------------------------------------------------------- @@ -3326,9 +3327,18 @@ function Decode_ModRM_SIB_Address( ModRM, BySize, Setting ) //The Selected Size is setting unless BySize attribute is true. //------------------------------------------------------------------------------------------------------------------------- - if (BySize) + if ( BySize ) { - Setting = ( GetOperandSize( Setting ) << 1 ) | FarPointer; + if ( Setting !== 16 || Vect ) + { + Setting = ( GetOperandSize( Setting ) << 1 ) | FarPointer; + } + + //------------------------------------------------------------------------------------------------------------------------- + //Non vectorized 128 uses Oword ptr aliases to QWord in 32 bit mode, or lower. + //------------------------------------------------------------------------------------------------------------------------- + + else if ( !Vect ) { Setting = 11 - ( ( BitMode <= 1 ) * 5 ); } } //------------------------------------------------------------------------------------------------------------------------- diff --git a/README.md b/README.md index 0be8135..af281dc 100644 --- a/README.md +++ b/README.md @@ -4,18 +4,19 @@ X86 Disassembler. This disassembler is mainly designed as an X86 Disassembly library for JavaScript that can run on any system. Supports decoding 64 bit, and 32 bit programs, also is completely backwards compatible to 16 bit 8086. ----------------------------------------------------------------------------------------------- + Supports Instruction sets:
MMX.
-SSE1,SSE2,SSE3,SSSE3,SSE4,SSE4a,SSE4.1,SSE4.2.
-SMX,VMX,
AES,ADX,
HLE,MPX.
+SSE, SSE2, SSE3, SSSE3, SSE4, SSE4a, SSE4.1, SSE4.2.
+SMX, VMX, AMD-V, Intel VT-x.
+AES, ADX.
+HLE, MPX.
+ABM, BMI1, BMI2, TBM.
+FMA, SHA.
AVX2.
-BMI1,BMI2,
-FMA,FMA4,
-SHA.
-AVX512F,AVX512VL,
-AVX512DQ,AVX512BW,AVX512CD,
-AVX512ER,AVX512PF,
-AVX512VBMI,AVX512IFMA.
+AVX512F, AVX512CD, AVX512ER, AVX512PF.
+AVX512BW, AVX512DQ, AVX512VL.
+AVX512IFMA, AVX512VBMI.
This disassembler supports every instruction ever made for all Intel, and AMD X86 processors. -----------------------------------------------------------------------------------------------