More BACKTRACK support, more 32-bit support, more more.
This commit is contained in:
parent
06dfd59ad6
commit
d6b4b9c438
12 changed files with 1155 additions and 876 deletions
|
|
@ -284,7 +284,7 @@ module.exports = function(grunt) {
|
|||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/pcjs/" + pkg.version + "/pc.map",
|
||||
define: ["\"APPNAME='PCjs'\"", "\"APPVERSION='" + pkg.version + "'\"", "DEBUGGER=false",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false"],
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=false"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pcjs/" + pkg.version + "/pc.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
},
|
||||
|
|
@ -299,7 +299,7 @@ module.exports = function(grunt) {
|
|||
TEMPcompilerOpts: {
|
||||
// create_source_map: "./tmp/pcjs/" + pkg.version + "/pc-dbg.map",
|
||||
define: ["\"APPNAME='PCjs'\"", "\"APPVERSION='" + pkg.version + "'\"",
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false"],
|
||||
"\"SITEHOST='www.pcjs.org'\"", "COMPILED=true", "DEBUG=false", "BACKTRACK=false", "I386=false"],
|
||||
// output_wrapper: "\"(function(){%output%})();//@ sourceMappingURL=/tmp/pcjs/" + pkg.version + "/pc-dbg.map\""
|
||||
output_wrapper: "\"(function(){%output%})();\""
|
||||
},
|
||||
|
|
|
|||
|
|
@ -709,7 +709,7 @@ function genMode(a, d, w, mrm, sGroup, sRO) {
|
|||
nCycles = "this.CYCLES.nEACyclesBase";
|
||||
break;
|
||||
case 4:
|
||||
sModAddr = "this.getSIB(0)";
|
||||
sModAddr = "this.getSIBAddr(0)";
|
||||
sModFunc = "SIB";
|
||||
nCycles = "this.CYCLES.nEACyclesBase";
|
||||
break;
|
||||
|
|
@ -756,7 +756,7 @@ function genMode(a, d, w, mrm, sGroup, sRO) {
|
|||
nCycles = "this.CYCLES.nEACyclesBaseDisp";
|
||||
break;
|
||||
case 4:
|
||||
sModAddr = "this.getSIB(1) + this.getIPDisp()";
|
||||
sModAddr = "this.getSIBAddr(1) + this.getIPDisp()";
|
||||
sModFunc = "SIBD8";
|
||||
nCycles = "this.CYCLES.nEACyclesBaseDisp";
|
||||
break;
|
||||
|
|
@ -803,7 +803,7 @@ function genMode(a, d, w, mrm, sGroup, sRO) {
|
|||
nCycles = "this.CYCLES.nEACyclesBaseDisp";
|
||||
break;
|
||||
case 4:
|
||||
sModAddr = "this.getSIB(2) + this.getIPWord()";
|
||||
sModAddr = "this.getSIBAddr(2) + this.getIPWord()";
|
||||
sModFunc = "SIBD32";
|
||||
nCycles = "this.CYCLES.nEACyclesBaseDisp";
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -1,70 +1,71 @@
|
|||
{
|
||||
"boss": true,
|
||||
"eqnull": true,
|
||||
"evil": true,
|
||||
"loopfunc": true,
|
||||
"sub": true,
|
||||
"globalstrict": true,
|
||||
"globals": {
|
||||
"APP_PCJS": true,
|
||||
"APPNAME": false,
|
||||
"APPVERSION": false,
|
||||
"SITEHOST": false,
|
||||
"COMPILED": true,
|
||||
"DEBUG": true,
|
||||
"MAXDEBUG": false,
|
||||
"PCJSCLASS": true,
|
||||
"DEBUGGER": true,
|
||||
"PREFETCH": true,
|
||||
"EAFUNCS": true,
|
||||
"FATARRAYS": true,
|
||||
"TYPEDARRAYS": true,
|
||||
"SAMPLER": true,
|
||||
"BACKTRACK": true,
|
||||
"Component": true,
|
||||
"State": true,
|
||||
"Bus": true,
|
||||
"ChipSet": true,
|
||||
"Computer": true,
|
||||
"CPU": true,
|
||||
"Debugger": true,
|
||||
"Disk": true,
|
||||
"FDC": true,
|
||||
"HDC": true,
|
||||
"Keyboard": true,
|
||||
"Memory": true,
|
||||
"Mouse": true,
|
||||
"Panel": true,
|
||||
"RAM": true,
|
||||
"ROM": true,
|
||||
"SerialPort": true,
|
||||
"Video": true,
|
||||
"X86": true,
|
||||
"X86Seg": true,
|
||||
"X86CPU": true,
|
||||
"X86Grps": true,
|
||||
"X86Help": true,
|
||||
"X86ModB": true,
|
||||
"X86ModW": true,
|
||||
"X86ModB32": true,
|
||||
"X86ModW32": true,
|
||||
"X86ModSIB": true,
|
||||
"X86OpXX": true,
|
||||
"X86Op0F": true,
|
||||
"str": true,
|
||||
"usr": true,
|
||||
"web": true,
|
||||
"document": true,
|
||||
"global": true,
|
||||
"module": true,
|
||||
"require": true,
|
||||
"ArrayBuffer": false,
|
||||
"DataView": false,
|
||||
"FileReader": false,
|
||||
"Uint8Array": false,
|
||||
"setTimeout": false,
|
||||
"clearTimeout": false,
|
||||
"webkitAudioContext": false,
|
||||
"window": true
|
||||
}
|
||||
"boss": true,
|
||||
"eqnull": true,
|
||||
"evil": true,
|
||||
"loopfunc": true,
|
||||
"sub": true,
|
||||
"globalstrict": true,
|
||||
"globals": {
|
||||
"APP_PCJS": true,
|
||||
"APPNAME": false,
|
||||
"APPVERSION": false,
|
||||
"SITEHOST": false,
|
||||
"COMPILED": true,
|
||||
"DEBUG": true,
|
||||
"MAXDEBUG": false,
|
||||
"PCJSCLASS": true,
|
||||
"DEBUGGER": true,
|
||||
"PREFETCH": true,
|
||||
"EAFUNCS": true,
|
||||
"FATARRAYS": true,
|
||||
"TYPEDARRAYS": true,
|
||||
"BACKTRACK": true,
|
||||
"SAMPLER": true,
|
||||
"I386": true,
|
||||
"Component": true,
|
||||
"State": true,
|
||||
"Bus": true,
|
||||
"ChipSet": true,
|
||||
"Computer": true,
|
||||
"CPU": true,
|
||||
"Debugger": true,
|
||||
"Disk": true,
|
||||
"FDC": true,
|
||||
"HDC": true,
|
||||
"Keyboard": true,
|
||||
"Memory": true,
|
||||
"Mouse": true,
|
||||
"Panel": true,
|
||||
"RAM": true,
|
||||
"ROM": true,
|
||||
"SerialPort": true,
|
||||
"Video": true,
|
||||
"X86": true,
|
||||
"X86Seg": true,
|
||||
"X86CPU": true,
|
||||
"X86Grps": true,
|
||||
"X86Help": true,
|
||||
"X86ModB": true,
|
||||
"X86ModW": true,
|
||||
"X86ModB32": true,
|
||||
"X86ModW32": true,
|
||||
"X86ModSIB": true,
|
||||
"X86OpXX": true,
|
||||
"X86Op0F": true,
|
||||
"str": true,
|
||||
"usr": true,
|
||||
"web": true,
|
||||
"document": true,
|
||||
"global": true,
|
||||
"module": true,
|
||||
"require": true,
|
||||
"ArrayBuffer": false,
|
||||
"DataView": false,
|
||||
"FileReader": false,
|
||||
"Uint8Array": false,
|
||||
"setTimeout": false,
|
||||
"clearTimeout": false,
|
||||
"webkitAudioContext": false,
|
||||
"window": true
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4746,7 +4746,7 @@ if (DEBUGGER) {
|
|||
if (this.cmp) this.cmp.reset();
|
||||
return true;
|
||||
case "ver":
|
||||
this.println((APPNAME || "PCjs") + " version " + APPVERSION + " (" + (COMPILED? "RELEASE" : (DEBUG? "DEBUG" : "NODEBUG")) + (PREFETCH? ",PREFETCH" : ",NOPREFETCH") + (EAFUNCS? "EAFUNCS" : ",EATESTS") + (TYPEDARRAYS? ",TYPEDARRAYS" : (FATARRAYS? ",FATARRAYS" : ",DWORDARRAYS")) + (BACKTRACK? ",BACKTRACK" : "") + ")");
|
||||
this.println((APPNAME || "PCjs") + " version " + APPVERSION + " (" + (I386? "80386" : "80286") + (COMPILED? ",RELEASE" : (DEBUG? ",DEBUG" : ",NODEBUG")) + (PREFETCH? ",PREFETCH" : ",NOPREFETCH") + (EAFUNCS? ",EAFUNCS" : ",EATESTS") + (TYPEDARRAYS? ",TYPEDARRAYS" : (FATARRAYS? ",FATARRAYS" : ",DWORDARRAYS")) + (BACKTRACK? ",BACKTRACK" : "") + ")");
|
||||
return true;
|
||||
default:
|
||||
ch0 = sCmd.charAt(0);
|
||||
|
|
|
|||
|
|
@ -108,7 +108,7 @@ var TYPEDARRAYS = false; // (typeof ArrayBuffer !== 'undefined');
|
|||
/**
|
||||
* @define {boolean}
|
||||
*
|
||||
* Enable backtracking (disabled in compiled versions). Backtracking is a mechanism that allows us to tag
|
||||
* Enables backtracking (disabled in compiled versions). Backtracking is a mechanism that allows us to tag
|
||||
* every byte of incoming data and follow the flow of that data.
|
||||
*/
|
||||
var BACKTRACK = true;
|
||||
|
|
@ -116,7 +116,7 @@ var BACKTRACK = true;
|
|||
/**
|
||||
* @define {boolean}
|
||||
*
|
||||
* Enable instruction sampling (a work-in-progress). This was used briefly as an internal debugging aid, to
|
||||
* Enables instruction sampling (a work-in-progress). This was used briefly as an internal debugging aid, to
|
||||
* periodically record EIP values in a fixed-length sampling buffer, halting execution once the sampling buffer
|
||||
* was full, and then compare those sampled EIP values to corresponding EIP values on subsequent runs, to look
|
||||
* for deviations. In theory, every run is supposed to be absolutely identical, even if you interrupt execution
|
||||
|
|
@ -124,6 +124,15 @@ var BACKTRACK = true;
|
|||
*/
|
||||
var SAMPLER = false;
|
||||
|
||||
/**
|
||||
* @define {boolean}
|
||||
*
|
||||
* Enables 80386 support. My preference continues to be one "binary" that supports all implemented CPUs, but
|
||||
* I'm providing this to enable a slimmed-down binary, at least until 80386 support is actually finished; at the
|
||||
* moment, there's just a lot of scaffolding that bloats the compiled version without adding real functionality.
|
||||
*/
|
||||
var I386 = true;
|
||||
|
||||
if (typeof module !== 'undefined') {
|
||||
global.PCJSCLASS = PCJSCLASS;
|
||||
global.DEBUGGER = DEBUGGER;
|
||||
|
|
@ -133,6 +142,7 @@ if (typeof module !== 'undefined') {
|
|||
global.TYPEDARRAYS = TYPEDARRAYS;
|
||||
global.BACKTRACK = BACKTRACK;
|
||||
global.SAMPLER = SAMPLER;
|
||||
global.I386 = I386;
|
||||
/*
|
||||
* TODO: When we're "required" by Node, should we return anything via module.exports?
|
||||
*/
|
||||
|
|
|
|||
|
|
@ -241,24 +241,6 @@ var X86 = {
|
|||
AUXOVF_OF: 0x08080,
|
||||
AUXOVF_CF: 0x10100
|
||||
},
|
||||
PARITY: [ // 256-byte array with a 1 wherever the number of set bits in the array index is EVEN
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0,
|
||||
1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1
|
||||
],
|
||||
/*
|
||||
* Bit values for opFlags, which are all reset to zero prior to each instruction
|
||||
*/
|
||||
|
|
@ -296,6 +278,8 @@ var X86 = {
|
|||
POPA: 0x61,
|
||||
BOUND: 0x62,
|
||||
ARPL: 0x63,
|
||||
OS: 0x66,
|
||||
AS: 0x67,
|
||||
PUSH16: 0x68,
|
||||
IMUL16: 0x69,
|
||||
PUSH8: 0x6A,
|
||||
|
|
|
|||
|
|
@ -46,13 +46,18 @@ if (typeof module !== 'undefined') {
|
|||
var X86Help = require("./x86help");
|
||||
var X86ModB = require("./x86modb");
|
||||
var X86ModW = require("./x86modw");
|
||||
var X86ModB32 = require("./x86modb32");
|
||||
var X86ModW32 = require("./x86modw32");
|
||||
var X86ModSIB = require("./x86modsib");
|
||||
var X86OpXX = require("./x86opxx");
|
||||
var X86Op0F = require("./x86op0f");
|
||||
}
|
||||
|
||||
if (I386) {
|
||||
if (typeof module !== 'undefined') {
|
||||
var X86ModB32 = require("./x86modb32");
|
||||
var X86ModW32 = require("./x86modw32");
|
||||
var X86ModSIB = require("./x86modsib");
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* X86CPU(parmsCPU)
|
||||
*
|
||||
|
|
@ -706,7 +711,7 @@ X86CPU.prototype.initProcessor = function()
|
|||
if (this.model >= X86.MODEL_80186) {
|
||||
/*
|
||||
* TODO: I don't go out of my way to make 80186/80188 cycle times accurate, since no IBM PC models used
|
||||
* those processors; beyond this point, my real priority is the 80286. But we may revisit the 80186 someday;
|
||||
* those processors; beyond the 8086, my next priority is the 80286. But we may revisit the 80186 someday;
|
||||
* instruction handlers that contain "hard-coded" 80286 cycle times include: opINSb, opINSw, opOUTSb,
|
||||
* opOUTSw, opENTER, and opLEAVE.
|
||||
*/
|
||||
|
|
@ -743,9 +748,14 @@ X86CPU.prototype.initProcessor = function()
|
|||
|
||||
this.OPFLAG_NOINTR8086 = 0; // used with instructions that should *not* set NOINTR on an 80286 (eg, non-SS segment loads)
|
||||
|
||||
this.aOps[0x0F] = X86OpXX.op0F;
|
||||
this.aOps[X86.OPCODE.ARPL] = X86OpXX.opARPL;
|
||||
this.aOps[X86.OPCODE.PUSHSP]= X86OpXX.opPUSHSP;
|
||||
this.aOps[0x0F] = X86OpXX.op0F;
|
||||
this.aOps[X86.OPCODE.ARPL] = X86OpXX.opARPL;
|
||||
this.aOps[X86.OPCODE.PUSHSP] = X86OpXX.opPUSHSP;
|
||||
|
||||
if (I386 && this.model >= X86.MODEL_80386) {
|
||||
this.aOps[X86.OPCODE.OS] = X86OpXX.opOS;
|
||||
this.aOps[X86.OPCODE.AS] = X86OpXX.opAS;
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
|
@ -762,9 +772,7 @@ X86CPU.prototype.reset = function()
|
|||
this.resetCycles();
|
||||
this.clearError(); // clear any fatal error/exception that setError() may have flagged
|
||||
if (SAMPLER) {
|
||||
this.iSampleNext = 0;
|
||||
this.iSampleFreq = 0;
|
||||
this.iSampleSkip = 0;
|
||||
this.iSampleNext = this.iSampleFreq = this.iSampleSkip = 0;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
@ -836,7 +844,8 @@ X86CPU.prototype.resetRegs = function()
|
|||
this.segDS = new X86Seg(this, X86Seg.ID.DATA, "DS");
|
||||
this.segES = new X86Seg(this, X86Seg.ID.DATA, "ES");
|
||||
this.segSS = new X86Seg(this, X86Seg.ID.STACK, "SS");
|
||||
if (this.model >= X86.MODEL_80386) {
|
||||
|
||||
if (I386 && this.model >= X86.MODEL_80386) {
|
||||
this.segFS = new X86Seg(this, X86Seg.ID.DATA, "FS");
|
||||
this.segGS = new X86Seg(this, X86Seg.ID.DATA, "GS");
|
||||
}
|
||||
|
|
@ -870,10 +879,10 @@ X86CPU.prototype.resetRegs = function()
|
|||
btiSIHi: 0,
|
||||
btiDILo: 0,
|
||||
btiDIHi: 0,
|
||||
btiEALo: 0,
|
||||
btiEAHi: 0,
|
||||
btiMemLo: 0,
|
||||
btiMemHi: 0,
|
||||
btiEALo: 0,
|
||||
btiEAHi: 0,
|
||||
btiIO: 0
|
||||
};
|
||||
}
|
||||
|
|
@ -951,7 +960,7 @@ X86CPU.prototype.resetRegs = function()
|
|||
this.opFlags = this.opPrefixes = 0;
|
||||
|
||||
/*
|
||||
* The following contain the (default) OPERAND size (in terms of number of bytes), and the corresponding masks
|
||||
* The following contain the (default) OPERAND size (2 for 16 bits, 4 for 32 bits), and the corresponding masks
|
||||
* for isolating the (src) bits of an OPERAND and clearing the (dst) bits of an OPERAND. These are reset to
|
||||
* their segCS counterparts at the start of every new instruction, but are also set here for documentation purposes.
|
||||
*/
|
||||
|
|
@ -959,7 +968,7 @@ X86CPU.prototype.resetRegs = function()
|
|||
this.opMask = this.segCS.opMask;
|
||||
|
||||
/*
|
||||
* Similarly, the following contain the (default) ADDRESS size (in terms of number of bytes), and the corresponding
|
||||
* Similarly, the following contain the (default) ADDRESS size (0 for 16 bits, 1 for 32 bits), and the corresponding
|
||||
* masks for isolating the (src) bits of an address and clearing the (dst) bits of an address. Like the OPERAND size
|
||||
* properties, these are reset to their segCS counterparts at the start of every new instruction.
|
||||
*/
|
||||
|
|
@ -970,7 +979,7 @@ X86CPU.prototype.resetRegs = function()
|
|||
* It's also worth noting that instructions that implicitly use the stack also rely on something called STACK size,
|
||||
* which is based on the BIG bit of the last descriptor loaded into SS; use the following segSS properties:
|
||||
*
|
||||
* segSS.addrSize (2 or 4)
|
||||
* segSS.addrSize (0 or 1)
|
||||
* segSS.addrMask (0xffff or 0xffffffff)
|
||||
*
|
||||
* As there is no STACK size instruction prefix override, there's no need to propagate these segSS properties
|
||||
|
|
@ -978,15 +987,29 @@ X86CPU.prototype.resetRegs = function()
|
|||
*/
|
||||
|
||||
/*
|
||||
* The default ModRM dispatch tables; the *Word tables will be updated based on the current ADDRESS size,
|
||||
* The ModRM dispatch tables; opMods refers to the active set, based on the current ADDRESS size (addrSize),
|
||||
* which is based foremost on segCS.addrSize, but can also be overridden by an ADDRESS size instruction prefix.
|
||||
*/
|
||||
this.aOpModMemByte = X86ModB.aOpModMem;
|
||||
this.aOpModRegByte = X86ModB.aOpModReg;
|
||||
this.aOpModGrpByte = X86ModB.aOpModGrp;
|
||||
this.aOpModMemWord = X86ModW.aOpModMem;
|
||||
this.aOpModRegWord = X86ModW.aOpModReg;
|
||||
this.aOpModGrpWord = X86ModW.aOpModGrp;
|
||||
this.aaOpMod = new Array(2);
|
||||
this.aaOpMod[0] = {
|
||||
aOpModRegByte: X86ModB.aOpModReg,
|
||||
aOpModMemByte: X86ModB.aOpModMem,
|
||||
aOpModGrpByte: X86ModB.aOpModGrp,
|
||||
aOpModRegWord: X86ModW.aOpModReg,
|
||||
aOpModMemWord: X86ModW.aOpModMem,
|
||||
aOpModGrpWord: X86ModW.aOpModGrp
|
||||
};
|
||||
if (I386) {
|
||||
this.aaOpMod[1] = {
|
||||
aOpModRegByte: X86ModB32.aOpModReg,
|
||||
aOpModMemByte: X86ModB32.aOpModMem,
|
||||
aOpModGrpByte: X86ModB32.aOpModGrp,
|
||||
aOpModRegWord: X86ModW32.aOpModReg,
|
||||
aOpModMemWord: X86ModW32.aOpModMem,
|
||||
aOpModGrpWord: X86ModW32.aOpModGrp
|
||||
};
|
||||
}
|
||||
this.opMods = this.aaOpMod[this.segCS.addrSize];
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1226,7 +1249,7 @@ X86CPU.prototype.restore = function(data)
|
|||
this.restoreProtMode(a[5]);
|
||||
this.setPS(a[6]);
|
||||
this.setIP(a[0]);
|
||||
if (this.model >= X86.MODEL_80386) {
|
||||
if (I386 && this.model >= X86.MODEL_80386) {
|
||||
this.segFS.restore(a[7]);
|
||||
this.segGS.restore(a[8]);
|
||||
}
|
||||
|
|
@ -1448,12 +1471,32 @@ X86CPU.prototype.getCF = function()
|
|||
/**
|
||||
* getPF()
|
||||
*
|
||||
* From http://graphics.stanford.edu/~seander/bithacks.html#ParityParallel:
|
||||
*
|
||||
* unsigned int v; // word value to compute the parity of
|
||||
* v ^= v >> 16;
|
||||
* v ^= v >> 8;
|
||||
* v ^= v >> 4;
|
||||
* v &= 0xf;
|
||||
* return (0x6996 >> v) & 1;
|
||||
*
|
||||
* The method above takes around 9 operations, and works for 32-bit words. It may be optimized to work just on
|
||||
* bytes in 5 operations by removing the two lines immediately following "unsigned int v;". The method first shifts
|
||||
* and XORs the eight nibbles of the 32-bit value together, leaving the result in the lowest nibble of v. Next,
|
||||
* the binary number 0110 1001 1001 0110 (0x6996 in hex) is shifted to the right by the value represented in the
|
||||
* lowest nibble of v. This number is like a miniature 16-bit parity-table indexed by the low four bits in v.
|
||||
* The result has the parity of v in bit 1, which is masked and returned.
|
||||
*
|
||||
* The x86 parity flag (PF) is based exclusively on the low 8 bits of resultParitySign, and PF must be SET if that byte
|
||||
* has EVEN parity; the above calculation yields ODD parity, so we use the conditional operator to invert the result.
|
||||
*
|
||||
* @this {X86CPU}
|
||||
* @return {number}
|
||||
*/
|
||||
X86CPU.prototype.getPF = function()
|
||||
{
|
||||
return (X86.PARITY[this.resultParitySign & 0xff])? X86.PS.PF : 0;
|
||||
var v = this.resultParitySign;
|
||||
return ((0x6996 >> ((v ^ (v >> 4)) & 0xf)) & 1)? 0 : X86.PS.PF;
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
@ -1852,9 +1895,7 @@ X86CPU.prototype.setBinding = function(sHTMLType, sBinding, control)
|
|||
*/
|
||||
X86CPU.prototype.getByte = function(addr)
|
||||
{
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiMemLo = this.bus.readBackTrack(addr);
|
||||
}
|
||||
if (BACKTRACK) this.backTrack.btiMemLo = this.bus.readBackTrack(addr);
|
||||
return this.aMemBlocks[(addr & this.addrMemMask) >> this.blockShift].readByte(addr & this.blockLimit);
|
||||
};
|
||||
|
||||
|
|
@ -1896,9 +1937,7 @@ X86CPU.prototype.getWord = function(addr)
|
|||
*/
|
||||
X86CPU.prototype.setByte = function(addr, b)
|
||||
{
|
||||
if (BACKTRACK) {
|
||||
this.bus.writeBackTrack(addr, this.backTrack.btiMemLo);
|
||||
}
|
||||
if (BACKTRACK) this.bus.writeBackTrack(addr, this.backTrack.btiMemLo);
|
||||
this.aMemBlocks[(addr & this.addrMemMask) >> this.blockShift].writeByte(addr & this.blockLimit, b & 0xff);
|
||||
};
|
||||
|
||||
|
|
@ -2357,13 +2396,13 @@ X86CPU.prototype.getIPWord = function()
|
|||
};
|
||||
|
||||
/**
|
||||
* getSIB(mod)
|
||||
* getSIBAddr(mod)
|
||||
*
|
||||
* @this {X86CPU}
|
||||
* @param {number} mod
|
||||
* @return {number}
|
||||
*/
|
||||
X86CPU.prototype.getSIB = function(mod)
|
||||
X86CPU.prototype.getSIBAddr = function(mod)
|
||||
{
|
||||
var b = PREFETCH? this.getBytePrefetch(this.regLIP) : this.getByte(this.regLIP);
|
||||
if (BACKTRACK) this.bus.updateBackTrackCode(this.regLIP, this.backTrack.btiMemLo);
|
||||
|
|
@ -2664,10 +2703,13 @@ X86CPU.prototype.stepCPU = function(nMinCycles)
|
|||
this.segData = this.segDS;
|
||||
this.segStack = this.segSS;
|
||||
|
||||
this.opSize = this.segCS.opSize;
|
||||
this.opMask = this.segCS.opMask;
|
||||
this.addrSize = this.segCS.addrSize;
|
||||
this.addrMask = this.segCS.addrMask;
|
||||
if (I386) {
|
||||
this.opSize = this.segCS.opSize;
|
||||
this.opMask = this.segCS.opMask;
|
||||
this.addrSize = this.segCS.addrSize;
|
||||
this.addrMask = this.segCS.addrMask;
|
||||
this.opMods = this.aaOpMod[this.addrSize];
|
||||
}
|
||||
|
||||
this.opPrefixes = this.opFlags & X86.OPFLAG.REPEAT;
|
||||
if (this.intFlags) {
|
||||
|
|
|
|||
|
|
@ -94,7 +94,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte04(fn) {
|
||||
var b = fn.call(this, this.regEAX & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, this.regEAX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regEAX = (this.regEAX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiAL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -190,7 +190,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte0C(fn) {
|
||||
var b = fn.call(this, this.regECX & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, this.regECX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regECX = (this.regECX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiCL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -286,7 +286,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte14(fn) {
|
||||
var b = fn.call(this, this.regEDX & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, this.regEDX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regEDX = (this.regEDX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiDL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -382,7 +382,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte1C(fn) {
|
||||
var b = fn.call(this, this.regEBX & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, this.regEBX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regEBX = (this.regEBX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiBL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -478,7 +478,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte24(fn) {
|
||||
var b = fn.call(this, (this.regEAX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, (this.regEAX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regEAX = (this.regEAX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiAH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -574,7 +574,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte2C(fn) {
|
||||
var b = fn.call(this, (this.regECX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, (this.regECX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regECX = (this.regECX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiCH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -670,7 +670,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte34(fn) {
|
||||
var b = fn.call(this, (this.regEDX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, (this.regEDX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regEDX = (this.regEDX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiDH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -766,7 +766,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte3C(fn) {
|
||||
var b = fn.call(this, (this.regEBX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(0)));
|
||||
var b = fn.call(this, (this.regEBX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(0)));
|
||||
this.regEBX = (this.regEBX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiBH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -862,7 +862,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte44(fn) {
|
||||
var b = fn.call(this, this.regEAX & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, this.regEAX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEAX = (this.regEAX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiAL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -958,7 +958,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte4C(fn) {
|
||||
var b = fn.call(this, this.regECX & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, this.regECX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regECX = (this.regECX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiCL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1054,7 +1054,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte54(fn) {
|
||||
var b = fn.call(this, this.regEDX & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, this.regEDX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEDX = (this.regEDX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiDL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1150,7 +1150,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte5C(fn) {
|
||||
var b = fn.call(this, this.regEBX & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, this.regEBX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEBX = (this.regEBX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiBL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1246,7 +1246,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte64(fn) {
|
||||
var b = fn.call(this, (this.regEAX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, (this.regEAX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEAX = (this.regEAX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiAH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1342,7 +1342,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte6C(fn) {
|
||||
var b = fn.call(this, (this.regECX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, (this.regECX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regECX = (this.regECX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiCH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1438,7 +1438,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte74(fn) {
|
||||
var b = fn.call(this, (this.regEDX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, (this.regEDX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEDX = (this.regEDX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiDH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1534,7 +1534,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte7C(fn) {
|
||||
var b = fn.call(this, (this.regEBX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var b = fn.call(this, (this.regEBX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEBX = (this.regEBX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiBH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1630,7 +1630,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte84(fn) {
|
||||
var b = fn.call(this, this.regEAX & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, this.regEAX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEAX = (this.regEAX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiAL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1726,7 +1726,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte8C(fn) {
|
||||
var b = fn.call(this, this.regECX & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, this.regECX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regECX = (this.regECX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiCL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1822,7 +1822,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte94(fn) {
|
||||
var b = fn.call(this, this.regEDX & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, this.regEDX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEDX = (this.regEDX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiDL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -1918,7 +1918,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByte9C(fn) {
|
||||
var b = fn.call(this, this.regEBX & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, this.regEBX & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEBX = (this.regEBX & ~0xff) | b;
|
||||
if (BACKTRACK) this.backTrack.btiBL = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -2014,7 +2014,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByteA4(fn) {
|
||||
var b = fn.call(this, (this.regEAX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, (this.regEAX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEAX = (this.regEAX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiAH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -2110,7 +2110,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByteAC(fn) {
|
||||
var b = fn.call(this, (this.regECX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, (this.regECX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regECX = (this.regECX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiCH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -2206,7 +2206,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByteB4(fn) {
|
||||
var b = fn.call(this, (this.regEDX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, (this.regEDX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEDX = (this.regEDX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiDH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -2302,7 +2302,7 @@ X86ModB32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegByteBC(fn) {
|
||||
var b = fn.call(this, (this.regEBX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var b = fn.call(this, (this.regEBX >> 8) & 0xff, this.getEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEBX = (this.regEBX & ~0xff00) | (b << 8);
|
||||
if (BACKTRACK) this.backTrack.btiBH = this.backTrack.btiEALo;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -3097,7 +3097,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte04(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), this.regEAX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), this.regEAX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiAL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3193,7 +3193,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte0C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), this.regECX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), this.regECX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiCL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3289,7 +3289,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte14(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), this.regEDX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), this.regEDX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiDL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3385,7 +3385,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte1C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), this.regEBX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), this.regEBX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiBL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3481,7 +3481,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte24(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), (this.regEAX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), (this.regEAX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiAH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3577,7 +3577,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte2C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), (this.regECX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), (this.regECX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiCH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3673,7 +3673,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte34(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), (this.regEDX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), (this.regEDX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiDH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3769,7 +3769,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte3C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(0)), (this.regEBX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), (this.regEBX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiBH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
|
|
@ -3865,7 +3865,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte44(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEAX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEAX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiAL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -3961,7 +3961,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte4C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), this.regECX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regECX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiCL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4057,7 +4057,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte54(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEDX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEDX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiDL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4153,7 +4153,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte5C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEBX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEBX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiBL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4249,7 +4249,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte64(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), (this.regEAX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), (this.regEAX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiAH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4345,7 +4345,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte6C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), (this.regECX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), (this.regECX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiCH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4441,7 +4441,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte74(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), (this.regEDX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), (this.regEDX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiDH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4537,7 +4537,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte7C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), (this.regEBX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), (this.regEBX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiBH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4633,7 +4633,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte84(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), this.regEAX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEAX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiAL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4729,7 +4729,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte8C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), this.regECX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regECX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiCL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4825,7 +4825,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte94(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), this.regEDX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEDX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiDL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -4921,7 +4921,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByte9C(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), this.regEBX & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEBX & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiBL;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -5017,7 +5017,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByteA4(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), (this.regEAX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), (this.regEAX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiAH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -5113,7 +5113,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByteAC(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), (this.regECX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), (this.regECX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiCH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -5209,7 +5209,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByteB4(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), (this.regEDX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), (this.regEDX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiDH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -5305,7 +5305,7 @@ X86ModB32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemByteBC(fn) {
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), (this.regEBX >> 8) & 0xff);
|
||||
var b = fn.call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), (this.regEBX >> 8) & 0xff);
|
||||
if (BACKTRACK) this.backTrack.btiEALo = this.backTrack.btiBH;
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
|
|
@ -5469,7 +5469,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte04(afnGrp, fnSrc) {
|
||||
var b = afnGrp[0].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[0].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -5565,7 +5565,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte0C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[1].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[1].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -5661,7 +5661,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte14(afnGrp, fnSrc) {
|
||||
var b = afnGrp[2].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[2].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -5757,7 +5757,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte1C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[3].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[3].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -5853,7 +5853,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte24(afnGrp, fnSrc) {
|
||||
var b = afnGrp[4].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[4].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -5949,7 +5949,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte2C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[5].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[5].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6045,7 +6045,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte34(afnGrp, fnSrc) {
|
||||
var b = afnGrp[6].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[6].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6141,7 +6141,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte3C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[7].call(this, this.modEAByte(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var b = afnGrp[7].call(this, this.modEAByte(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6237,7 +6237,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte44(afnGrp, fnSrc) {
|
||||
var b = afnGrp[0].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[0].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -6333,7 +6333,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte4C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[1].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[1].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -6429,7 +6429,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte54(afnGrp, fnSrc) {
|
||||
var b = afnGrp[2].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[2].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -6525,7 +6525,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte5C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[3].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[3].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -6621,7 +6621,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte64(afnGrp, fnSrc) {
|
||||
var b = afnGrp[4].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[4].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -6717,7 +6717,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte6C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[5].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[5].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -6813,7 +6813,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte74(afnGrp, fnSrc) {
|
||||
var b = afnGrp[6].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[6].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -6909,7 +6909,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte7C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[7].call(this, this.modEAByte(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var b = afnGrp[7].call(this, this.modEAByte(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7005,7 +7005,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte84(afnGrp, fnSrc) {
|
||||
var b = afnGrp[0].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[0].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7101,7 +7101,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte8C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[1].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[1].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7197,7 +7197,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte94(afnGrp, fnSrc) {
|
||||
var b = afnGrp[2].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[2].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7293,7 +7293,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByte9C(afnGrp, fnSrc) {
|
||||
var b = afnGrp[3].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[3].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7389,7 +7389,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByteA4(afnGrp, fnSrc) {
|
||||
var b = afnGrp[4].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[4].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7485,7 +7485,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByteAC(afnGrp, fnSrc) {
|
||||
var b = afnGrp[5].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[5].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7581,7 +7581,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByteB4(afnGrp, fnSrc) {
|
||||
var b = afnGrp[6].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[6].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7677,7 +7677,7 @@ X86ModB32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpByteBC(afnGrp, fnSrc) {
|
||||
var b = afnGrp[7].call(this, this.modEAByte(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var b = afnGrp[7].call(this, this.modEAByte(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAByte(b);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -102,7 +102,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord04(fn) {
|
||||
var w = fn.call(this, this.regEAX & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regEAX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regEAX = (this.regEAX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiAL = this.backTrack.btiEALo; this.backTrack.btiAH = this.backTrack.btiEAHi;
|
||||
|
|
@ -214,7 +214,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord0C(fn) {
|
||||
var w = fn.call(this, this.regECX & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regECX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regECX = (this.regECX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiCL = this.backTrack.btiEALo; this.backTrack.btiCH = this.backTrack.btiEAHi;
|
||||
|
|
@ -326,7 +326,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord14(fn) {
|
||||
var w = fn.call(this, this.regEDX & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regEDX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regEDX = (this.regEDX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiDL = this.backTrack.btiEALo; this.backTrack.btiDH = this.backTrack.btiEAHi;
|
||||
|
|
@ -438,7 +438,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord1C(fn) {
|
||||
var w = fn.call(this, this.regEBX & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regEBX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regEBX = (this.regEBX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiBL = this.backTrack.btiEALo; this.backTrack.btiBH = this.backTrack.btiEAHi;
|
||||
|
|
@ -538,7 +538,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord24(fn) {
|
||||
var w = fn.call(this, this.regESP & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regESP & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regESP = (this.regESP & ~this.opMask) | w;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -638,7 +638,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord2C(fn) {
|
||||
var w = fn.call(this, this.regEBP & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regEBP & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regEBP = (this.regEBP & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiBPLo = this.backTrack.btiEALo; this.backTrack.btiBPHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -750,7 +750,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord34(fn) {
|
||||
var w = fn.call(this, this.regESI & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regESI & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regESI = (this.regESI & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiSILo = this.backTrack.btiEALo; this.backTrack.btiSIHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -862,7 +862,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord3C(fn) {
|
||||
var w = fn.call(this, this.regEDI & this.opMask, this.getEAWord(this.segData, this.getSIB(0)));
|
||||
var w = fn.call(this, this.regEDI & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(0)));
|
||||
this.regEDI = (this.regEDI & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiDILo = this.backTrack.btiEALo; this.backTrack.btiDIHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -974,7 +974,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord44(fn) {
|
||||
var w = fn.call(this, this.regEAX & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regEAX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEAX = (this.regEAX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiAL = this.backTrack.btiEALo; this.backTrack.btiAH = this.backTrack.btiEAHi;
|
||||
|
|
@ -1086,7 +1086,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord4C(fn) {
|
||||
var w = fn.call(this, this.regECX & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regECX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regECX = (this.regECX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiCL = this.backTrack.btiEALo; this.backTrack.btiCH = this.backTrack.btiEAHi;
|
||||
|
|
@ -1198,7 +1198,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord54(fn) {
|
||||
var w = fn.call(this, this.regEDX & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regEDX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEDX = (this.regEDX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiDL = this.backTrack.btiEALo; this.backTrack.btiDH = this.backTrack.btiEAHi;
|
||||
|
|
@ -1310,7 +1310,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord5C(fn) {
|
||||
var w = fn.call(this, this.regEBX & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regEBX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEBX = (this.regEBX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiBL = this.backTrack.btiEALo; this.backTrack.btiBH = this.backTrack.btiEAHi;
|
||||
|
|
@ -1410,7 +1410,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord64(fn) {
|
||||
var w = fn.call(this, this.regESP & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regESP & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regESP = (this.regESP & ~this.opMask) | w;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -1510,7 +1510,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord6C(fn) {
|
||||
var w = fn.call(this, this.regEBP & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regEBP & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEBP = (this.regEBP & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiBPLo = this.backTrack.btiEALo; this.backTrack.btiBPHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -1622,7 +1622,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord74(fn) {
|
||||
var w = fn.call(this, this.regESI & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regESI & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regESI = (this.regESI & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiSILo = this.backTrack.btiEALo; this.backTrack.btiSIHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -1734,7 +1734,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord7C(fn) {
|
||||
var w = fn.call(this, this.regEDI & this.opMask, this.getEAWord(this.segData, this.getSIB(1) + this.getIPDisp()));
|
||||
var w = fn.call(this, this.regEDI & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()));
|
||||
this.regEDI = (this.regEDI & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiDILo = this.backTrack.btiEALo; this.backTrack.btiDIHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -1846,7 +1846,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord84(fn) {
|
||||
var w = fn.call(this, this.regEAX & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regEAX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEAX = (this.regEAX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiAL = this.backTrack.btiEALo; this.backTrack.btiAH = this.backTrack.btiEAHi;
|
||||
|
|
@ -1958,7 +1958,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord8C(fn) {
|
||||
var w = fn.call(this, this.regECX & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regECX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regECX = (this.regECX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiCL = this.backTrack.btiEALo; this.backTrack.btiCH = this.backTrack.btiEAHi;
|
||||
|
|
@ -2070,7 +2070,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord94(fn) {
|
||||
var w = fn.call(this, this.regEDX & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regEDX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEDX = (this.regEDX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiDL = this.backTrack.btiEALo; this.backTrack.btiDH = this.backTrack.btiEAHi;
|
||||
|
|
@ -2182,7 +2182,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWord9C(fn) {
|
||||
var w = fn.call(this, this.regEBX & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regEBX & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEBX = (this.regEBX & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiBL = this.backTrack.btiEALo; this.backTrack.btiBH = this.backTrack.btiEAHi;
|
||||
|
|
@ -2282,7 +2282,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWordA4(fn) {
|
||||
var w = fn.call(this, this.regESP & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regESP & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regESP = (this.regESP & ~this.opMask) | w;
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -2382,7 +2382,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWordAC(fn) {
|
||||
var w = fn.call(this, this.regEBP & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regEBP & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEBP = (this.regEBP & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiBPLo = this.backTrack.btiEALo; this.backTrack.btiBPHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -2494,7 +2494,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWordB4(fn) {
|
||||
var w = fn.call(this, this.regESI & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regESI & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regESI = (this.regESI & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiSILo = this.backTrack.btiEALo; this.backTrack.btiSIHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -2606,7 +2606,7 @@ X86ModW32.aOpModReg = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32RegWordBC(fn) {
|
||||
var w = fn.call(this, this.regEDI & this.opMask, this.getEAWord(this.segData, this.getSIB(2) + this.getIPWord()));
|
||||
var w = fn.call(this, this.regEDI & this.opMask, this.getEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()));
|
||||
this.regEDI = (this.regEDI & ~this.opMask) | w;
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiDILo = this.backTrack.btiEALo; this.backTrack.btiDIHi = this.backTrack.btiEAHi;
|
||||
|
|
@ -3508,7 +3508,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord04(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regEAX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regEAX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiAL; this.backTrack.btiEAHi = this.backTrack.btiAH;
|
||||
}
|
||||
|
|
@ -3620,7 +3620,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord0C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regECX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regECX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiCL; this.backTrack.btiEAHi = this.backTrack.btiCH;
|
||||
}
|
||||
|
|
@ -3732,7 +3732,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord14(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regEDX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regEDX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiDL; this.backTrack.btiEAHi = this.backTrack.btiDH;
|
||||
}
|
||||
|
|
@ -3844,7 +3844,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord1C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regEBX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regEBX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiBL; this.backTrack.btiEAHi = this.backTrack.btiBH;
|
||||
}
|
||||
|
|
@ -3956,7 +3956,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord24(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regESP & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regESP & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = X86.BACKTRACK.SP_LO; this.backTrack.btiEAHi = X86.BACKTRACK.SP_HI;
|
||||
}
|
||||
|
|
@ -4068,7 +4068,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord2C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regEBP & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regEBP & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiBPLo; this.backTrack.btiEAHi = this.backTrack.btiBPHi;
|
||||
}
|
||||
|
|
@ -4180,7 +4180,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord34(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regESI & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regESI & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiSILo; this.backTrack.btiEAHi = this.backTrack.btiSIHi;
|
||||
}
|
||||
|
|
@ -4292,7 +4292,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord3C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(0)), this.regEDI & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), this.regEDI & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiDILo; this.backTrack.btiEAHi = this.backTrack.btiDIHi;
|
||||
}
|
||||
|
|
@ -4404,7 +4404,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord44(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEAX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEAX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiAL; this.backTrack.btiEAHi = this.backTrack.btiAH;
|
||||
}
|
||||
|
|
@ -4516,7 +4516,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord4C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regECX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regECX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiCL; this.backTrack.btiEAHi = this.backTrack.btiCH;
|
||||
}
|
||||
|
|
@ -4628,7 +4628,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord54(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEDX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEDX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiDL; this.backTrack.btiEAHi = this.backTrack.btiDH;
|
||||
}
|
||||
|
|
@ -4740,7 +4740,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord5C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEBX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEBX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiBL; this.backTrack.btiEAHi = this.backTrack.btiBH;
|
||||
}
|
||||
|
|
@ -4852,7 +4852,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord64(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regESP & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regESP & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = X86.BACKTRACK.SP_LO; this.backTrack.btiEAHi = X86.BACKTRACK.SP_HI;
|
||||
}
|
||||
|
|
@ -4964,7 +4964,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord6C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEBP & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEBP & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiBPLo; this.backTrack.btiEAHi = this.backTrack.btiBPHi;
|
||||
}
|
||||
|
|
@ -5076,7 +5076,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord74(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regESI & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regESI & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiSILo; this.backTrack.btiEAHi = this.backTrack.btiSIHi;
|
||||
}
|
||||
|
|
@ -5188,7 +5188,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord7C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), this.regEDI & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), this.regEDI & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiDILo; this.backTrack.btiEAHi = this.backTrack.btiDIHi;
|
||||
}
|
||||
|
|
@ -5300,7 +5300,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord84(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regEAX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEAX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiAL; this.backTrack.btiEAHi = this.backTrack.btiAH;
|
||||
}
|
||||
|
|
@ -5412,7 +5412,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord8C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regECX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regECX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiCL; this.backTrack.btiEAHi = this.backTrack.btiCH;
|
||||
}
|
||||
|
|
@ -5524,7 +5524,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord94(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regEDX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEDX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiDL; this.backTrack.btiEAHi = this.backTrack.btiDH;
|
||||
}
|
||||
|
|
@ -5636,7 +5636,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWord9C(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regEBX & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEBX & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiBL; this.backTrack.btiEAHi = this.backTrack.btiBH;
|
||||
}
|
||||
|
|
@ -5748,7 +5748,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWordA4(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regESP & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regESP & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = X86.BACKTRACK.SP_LO; this.backTrack.btiEAHi = X86.BACKTRACK.SP_HI;
|
||||
}
|
||||
|
|
@ -5860,7 +5860,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWordAC(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regEBP & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEBP & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiBPLo; this.backTrack.btiEAHi = this.backTrack.btiBPHi;
|
||||
}
|
||||
|
|
@ -5972,7 +5972,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWordB4(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regESI & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regESI & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiSILo; this.backTrack.btiEAHi = this.backTrack.btiSIHi;
|
||||
}
|
||||
|
|
@ -6084,7 +6084,7 @@ X86ModW32.aOpModMem = [
|
|||
* @param {function(number,number)} fn (dst,src)
|
||||
*/
|
||||
function opMod32MemWordBC(fn) {
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), this.regEDI & this.opMask);
|
||||
var w = fn.call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), this.regEDI & this.opMask);
|
||||
if (BACKTRACK) {
|
||||
this.backTrack.btiEALo = this.backTrack.btiDILo; this.backTrack.btiEAHi = this.backTrack.btiDIHi;
|
||||
}
|
||||
|
|
@ -6256,7 +6256,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord04(afnGrp, fnSrc) {
|
||||
var w = afnGrp[0].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[0].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6352,7 +6352,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord0C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[1].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[1].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6448,7 +6448,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord14(afnGrp, fnSrc) {
|
||||
var w = afnGrp[2].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[2].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6544,7 +6544,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord1C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[3].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[3].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6640,7 +6640,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord24(afnGrp, fnSrc) {
|
||||
var w = afnGrp[4].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[4].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6736,7 +6736,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord2C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[5].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[5].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6832,7 +6832,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord34(afnGrp, fnSrc) {
|
||||
var w = afnGrp[6].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[6].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -6928,7 +6928,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord3C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[7].call(this, this.modEAWord(this.segData, this.getSIB(0)), fnSrc.call(this));
|
||||
var w = afnGrp[7].call(this, this.modEAWord(this.segData, this.getSIBAddr(0)), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBase;
|
||||
},
|
||||
|
|
@ -7024,7 +7024,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord44(afnGrp, fnSrc) {
|
||||
var w = afnGrp[0].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[0].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7120,7 +7120,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord4C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[1].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[1].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7216,7 +7216,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord54(afnGrp, fnSrc) {
|
||||
var w = afnGrp[2].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[2].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7312,7 +7312,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord5C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[3].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[3].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7408,7 +7408,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord64(afnGrp, fnSrc) {
|
||||
var w = afnGrp[4].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[4].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7504,7 +7504,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord6C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[5].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[5].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7600,7 +7600,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord74(afnGrp, fnSrc) {
|
||||
var w = afnGrp[6].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[6].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7696,7 +7696,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord7C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[7].call(this, this.modEAWord(this.segData, this.getSIB(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
var w = afnGrp[7].call(this, this.modEAWord(this.segData, this.getSIBAddr(1) + this.getIPDisp()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7792,7 +7792,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord84(afnGrp, fnSrc) {
|
||||
var w = afnGrp[0].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[0].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7888,7 +7888,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord8C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[1].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[1].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -7984,7 +7984,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord94(afnGrp, fnSrc) {
|
||||
var w = afnGrp[2].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[2].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -8080,7 +8080,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWord9C(afnGrp, fnSrc) {
|
||||
var w = afnGrp[3].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[3].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -8176,7 +8176,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWordA4(afnGrp, fnSrc) {
|
||||
var w = afnGrp[4].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[4].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -8272,7 +8272,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWordAC(afnGrp, fnSrc) {
|
||||
var w = afnGrp[5].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[5].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -8368,7 +8368,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWordB4(afnGrp, fnSrc) {
|
||||
var w = afnGrp[6].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[6].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
@ -8464,7 +8464,7 @@ X86ModW32.aOpModGrp = [
|
|||
* @param {function()} fnSrc
|
||||
*/
|
||||
function opMod32GrpWordBC(afnGrp, fnSrc) {
|
||||
var w = afnGrp[7].call(this, this.modEAWord(this.segData, this.getSIB(2) + this.getIPWord()), fnSrc.call(this));
|
||||
var w = afnGrp[7].call(this, this.modEAWord(this.segData, this.getSIBAddr(2) + this.getIPWord()), fnSrc.call(this));
|
||||
this.setEAWord(w);
|
||||
this.nStepCycles -= this.CYCLES.nEACyclesBaseDisp;
|
||||
},
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ var X86Op0F = {
|
|||
if ((bModRM & 0x38) < 0x10) { // possible reg values: 0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38
|
||||
if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
|
||||
}
|
||||
this.aOpModGrpWord[bModRM].call(this, this.aOpGrp6, X86Grps.opGrpNoSrc);
|
||||
this.opMods.aOpModGrpWord[bModRM].call(this, this.aOpGrp6, X86Grps.opGrpNoSrc);
|
||||
if (EAFUNCS) { this.modEAWord = this.modEAWordEnabled; this.setEAWord = this.setEAWordEnabled; }
|
||||
},
|
||||
/**
|
||||
|
|
@ -62,7 +62,7 @@ var X86Op0F = {
|
|||
if (!(bModRM & 0x10)) {
|
||||
if (EAFUNCS) this.modEAWord = this.modEAWordDisabled; else this.opFlags |= X86.OPFLAG.NOREAD;
|
||||
}
|
||||
this.aOpModGrpWord[bModRM].call(this, X86Op0F.aOpGrp7, X86Grps.opGrpNoSrc);
|
||||
this.opMods.aOpModGrpWord[bModRM].call(this, X86Op0F.aOpGrp7, X86Grps.opGrpNoSrc);
|
||||
if (EAFUNCS) { this.modEAWord = this.modEAWordEnabled; this.setEAWord = this.setEAWordEnabled; }
|
||||
},
|
||||
/**
|
||||
|
|
@ -71,7 +71,7 @@ var X86Op0F = {
|
|||
* op=0x0F,0x02 (lar reg,rm)
|
||||
*/
|
||||
opLAR: function() {
|
||||
this.aOpModRegWord[this.getIPByte()].call(this, X86Help.opHelpLAR);
|
||||
this.opMods.aOpModRegWord[this.getIPByte()].call(this, X86Help.opHelpLAR);
|
||||
},
|
||||
/**
|
||||
* @this {X86CPU}
|
||||
|
|
@ -79,7 +79,7 @@ var X86Op0F = {
|
|||
* op=0x0F,0x03 (lsl reg,rm)
|
||||
*/
|
||||
opLSL: function() {
|
||||
this.aOpModRegWord[this.getIPByte()].call(this, X86Help.opHelpLSL);
|
||||
this.opMods.aOpModRegWord[this.getIPByte()].call(this, X86Help.opHelpLSL);
|
||||
},
|
||||
/**
|
||||
* opLOADALL()
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -118,7 +118,7 @@ X86Seg.ID = {
|
|||
X86Seg.loadReal = function loadReal(sel, fSuppress)
|
||||
{
|
||||
this.sel = sel;
|
||||
this.opSize = this.addrSize = 2;
|
||||
this.opSize = 2; this.addrSize = 0;
|
||||
this.opMask = this.addrMask = 0xffff;
|
||||
return this.base = sel << 4;
|
||||
};
|
||||
|
|
@ -865,7 +865,7 @@ X86Seg.prototype.updateMode = function(fProt)
|
|||
this.opSize = 2;
|
||||
this.opMask = 0xffff;
|
||||
}
|
||||
this.addrSize = this.opSize;
|
||||
this.addrSize = this.opSize >> 2;
|
||||
this.addrMask = this.opMask;
|
||||
return fProt;
|
||||
};
|
||||
|
|
|
|||
Loading…
Reference in a new issue