More BACKTRACK support, more 32-bit support, more more.

This commit is contained in:
Jeff Parsons 2015-01-21 17:19:58 -08:00 committed by jeffpar
commit d6b4b9c438
12 changed files with 1155 additions and 876 deletions

View file

@ -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%})();\""
},

View file

@ -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;

View file

@ -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
}
}

View file

@ -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);

View file

@ -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?
*/

View file

@ -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,

View file

@ -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) {

View file

@ -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;
},

View file

@ -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;
},

View file

@ -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

View file

@ -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;
};