32bit-adressing-table-modrm
Version:
Intel- 32-Bit Addressing Forms with the ModR/M Byte converted to an easily searchable Hashmap, also includes a reverse search.
238 lines (237 loc) • 9.77 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.create16bitRmTable = exports.create32bitSIBtable = exports.create32bitModRmTable = exports.createTable = void 0;
var createTable = function (table) {
var map = new Map();
table.col.forEach(function (c, i) {
var rowMap = new Map();
map.set(c, rowMap);
table.row.forEach(function (r, j) {
rowMap.set(r, table.value[j][i]);
});
});
return map;
};
exports.createTable = createTable;
var create32bitModRmTable = function () {
return exports.createTable({
col: ['set1', 'set2', 'set3', 'set4', 'set5', 'set6', 'set7', 'set8'],
row: [
'set1',
'set2',
'set3',
'set4',
'set5',
'set6',
'set7',
'set8',
'[eax]',
'[ecx]',
'[edx]',
'[ebx]',
'[sib]',
'disp32',
'[esi]',
'[edi]',
'[eax]+disp8',
'[ecx]+disp8',
'[edx]+disp8',
'[ebx]+disp8',
'[sib]+disp8',
'[ebp]+disp8',
'[esi]+disp8',
'[edi]+disp8',
'[eax]+disp32',
'[ecx]+disp32',
'[edx]+disp32',
'[ebx]+disp32',
'[sib]+disp32',
'[ebp]+disp32',
'[esi]+disp32',
'[edi]+disp32',
],
value: [
['C0', 'C8', 'D0', 'D8', 'E0', 'E8', 'F0', 'F8'],
['C1', 'C9', 'D1', 'D9', 'E1', 'E9', 'F1', 'F9'],
['C2', 'CA', 'D2', 'DA', 'E2', 'EA', 'F2', 'FA'],
['C3', 'CB', 'D3', 'DB', 'E3', 'EB', 'F3', 'FB'],
['C4', 'CC', 'D4', 'DC', 'E4', 'EC', 'F4', 'FC'],
['C5', 'CD', 'D5', 'DD', 'E5', 'ED', 'F5', 'FD'],
['C6', 'CE', 'D6', 'DE', 'E6', 'EE', 'F6', 'FE'],
['C7', 'CF', 'D7', 'DF', 'E7', 'EF', 'F7', 'FF'],
['00', '08', '10', '18', '20', '28', '30', '38'],
['01', '09', '11', '19', '21', '29', '31', '39'],
['02', '0A', '12', '1A', '22', '2A', '32', '3A'],
['03', '0B', '13', '1B', '23', '2B', '33', '3B'],
['04', '0C', '14', '1C', '24', '2C', '34', '3C'],
['05', '0D', '15', '1D', '25', '2D', '35', '3D'],
['06', '0E', '16', '1E', '26', '2E', '36', '3E'],
['07', '0F', '17', '1F', '27', '2F', '37', '3F'],
['40', '48', '50', '58', '60', '68', '70', '78'],
['41', '49', '51', '59', '61', '69', '71', '79'],
['42', '4A', '52', '5A', '62', '6A', '72', '7A'],
['43', '4B', '53', '5B', '63', '6B', '73', '7B'],
['44', '4C', '54', '5C', '64', '6C', '74', '7C'],
['45', '4D', '55', '5D', '65', '6D', '75', '7D'],
['46', '4E', '56', '5E', '66', '6E', '76', '7E'],
['47', '4F', '57', '5F', '67', '6F', '77', '7F'],
['80', '88', '90', '98', 'A0', 'A8', 'B0', 'B8'],
['81', '89', '91', '99', 'A1', 'A9', 'B1', 'B9'],
['82', '8A', '92', '9A', 'A2', 'AA', 'B2', 'BA'],
['83', '8B', '93', '9B', 'A3', 'AB', 'B3', 'BB'],
['84', '8C', '94', '9C', 'A4', 'AC', 'B4', 'BC'],
['85', '8D', '95', '9D', 'A5', 'AD', 'B5', 'BD'],
['86', '8E', '96', '9E', 'A6', 'AE', 'B6', 'BE'],
['87', '8F', '97', '9F', 'A7', 'AF', 'B7', 'BF'],
],
});
};
exports.create32bitModRmTable = create32bitModRmTable;
var create32bitSIBtable = function () {
return exports.createTable({
col: ['eax', 'ecx', 'edx', 'ebx', 'esp', '[*]', 'esi', 'edi'],
row: [
'[eax]',
'[ecx]',
'[edx]',
'[ebx]',
'none',
'[ebp]',
'[esi]',
'[edi]',
'[eax*2]',
'[ecx*2]',
'[edx*2]',
'[ebx*2]',
'none',
'[ebp*2]',
'[esi*2]',
'[edi*2]',
'[eax*4]',
'[ecx*4]',
'[edx*4]',
'[ebx*4]',
'none',
'[ebp*4]',
'[esi*4]',
'[edi*4]',
'[eax*8]',
'[ecx*8]',
'[edx*8]',
'[ebx*8]',
'none',
'[ebp*8]',
'[esi*8]',
'[edi*8]',
],
value: [
['00', '01', '02', '03', '04', '05', '06', '07'],
['08', '09', '0A', '0B', '0C', '0D', '0E', '0F'],
['10', '11', '12', '13', '14', '15', '16', '17'],
['18', '19', '1A', '1B', '1C', '1D', '1E', '1F'],
['20', '21', '22', '23', '24', '25', '26', '27'],
['28', '29', '2A', '2B', '2C', '2D', '2E', '2F'],
['30', '31', '32', '33', '34', '35', '36', '37'],
['38', '39', '3A', '3B', '3C', '3D', '3E', '3F'],
['40', '41', '42', '43', '44', '45', '46', '47'],
['48', '49', '4A', '4B', '4C', '4D', '4E', '4F'],
['50', '51', '52', '53', '54', '55', '56', '57'],
['58', '59', '5A', '5B', '5C', '5D', '5E', '5F'],
['60', '61', '62', '63', '64', '65', '66', '67'],
['68', '69', '6A', '6B', '6C', '6D', '6E', '6F'],
['70', '71', '72', '73', '74', '75', '76', '77'],
['78', '79', '7A', '7B', '7C', '7D', '7E', '7F'],
['80', '81', '82', '83', '84', '85', '86', '87'],
['88', '89', '8A', '8B', '8C', '8D', '8E', '8F'],
['90', '91', '92', '93', '94', '95', '96', '97'],
['98', '99', '9A', '9B', '9C', '9D', '9E', '9F'],
['A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7'],
['A8', 'A9', 'AA', 'AB', 'AC', 'AD', 'AE', 'AF'],
['B0', 'B1', 'B2', 'B3', 'B4', 'B5', 'B6', 'B7'],
['B8', 'B9', 'BA', 'BB', 'BC', 'BD', 'BE', 'BF'],
['C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7'],
['C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF'],
['D0', 'D1', 'D2', 'D3', 'D4', 'D5', 'D6', 'D7'],
['D8', 'D9', 'DA', 'DB', 'DC', 'DD', 'DE', 'DF'],
['E0', 'E1', 'E2', 'E3', 'E4', 'E5', 'E6', 'E7'],
['E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF'],
['F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7'],
['F8', 'F9', 'FA', 'FB', 'FC', 'FD', 'FE', 'FF'],
],
});
};
exports.create32bitSIBtable = create32bitSIBtable;
var create16bitRmTable = function () {
return exports.createTable({
col: ['set1', 'set2', 'set3', 'set4', 'set5', 'set6', 'set7', 'set8'],
row: [
'[bx+si]',
'[bx+di]',
'[bp+si]',
'[bp+di]',
'[si]',
'[di]',
'disp16',
'[bx]',
'[bx+si]+disp8',
'[bx+di]+disp8',
'[bp+si]+disp8',
'[bp+di]+disp8',
'[si]+disp8',
'[di]+disp8',
'[bp]+disp8',
'[bx]+disp8',
'[bx+si]+disp16',
'[bx+di]+disp16',
'[bp+si]+disp16',
'[bp+di]+disp16',
'[si]+disp16',
'[di]+disp16',
'[bp]+disp16',
'[bx]+disp16',
'set1',
'set2',
'set3',
'set4',
'set5',
'set6',
'set7',
'set8',
],
value: [
['00', '08', '10', '18', '20', '28', '30', '38'],
['01', '09', '11', '19', '21', '29', '31', '39'],
['02', '0A', '12', '1A', '22', '2A', '32', '3A'],
['03', '0B', '13', '1B', '23', '2B', '33', '3B'],
['04', '0C', '14', '1C', '24', '2C', '34', '3C'],
['05', '0D', '15', '1D', '25', '2D', '35', '3D'],
['06', '0E', '16', '1E', '26', '2E', '36', '3E'],
['07', '0F', '17', '1F', '27', '2F', '37', '3F'],
['40', '48', '50', '58', '60', '68', '70', '78'],
['41', '49', '51', '59', '61', '69', '71', '79'],
['42', '4A', '52', '5A', '62', '6A', '72', '7A'],
['43', '4B', '53', '5B', '63', '6B', '73', '7B'],
['44', '4C', '54', '5C', '64', '6C', '74', '7C'],
['45', '4D', '55', '5D', '65', '6D', '75', '7D'],
['46', '4E', '56', '5E', '66', '6E', '76', '7E'],
['47', '4F', '57', '5F', '67', '6F', '77', '7F'],
['80', '88', '90', '98', 'A0', 'A8', 'B0', 'B8'],
['81', '89', '91', '99', 'A1', 'A9', 'B1', 'B9'],
['82', '8A', '92', '9A', 'A2', 'AA', 'B2', 'BA'],
['83', '8B', '93', '9B', 'A3', 'AB', 'B3', 'BB'],
['84', '8C', '94', '9C', 'A4', 'AC', 'B4', 'BC'],
['85', '8D', '95', '9D', 'A5', 'AD', 'B5', 'BD'],
['86', '8E', '96', '9E', 'A6', 'AE', 'B6', 'BE'],
['87', '8F', '97', '9F', 'A7', 'AF', 'B7', 'BF'],
['C0', 'C8', 'D0', 'D8', 'E0', 'E8', 'F0', 'F8'],
['C1', 'C9', 'D1', 'D9', 'E1', 'E9', 'F1', 'F9'],
['C2', 'CA', 'D2', 'DA', 'E2', 'EA', 'F2', 'FA'],
['C3', 'CB', 'D3', 'DB', 'E3', 'EB', 'F3', 'FB'],
['C4', 'CC', 'D4', 'DC', 'E4', 'EC', 'F4', 'FC'],
['C5', 'CD', 'D5', 'DD', 'E5', 'ED', 'F5', 'FD'],
['C6', 'CE', 'D6', 'DE', 'E6', 'EE', 'F6', 'FE'],
['C7', 'CF', 'D7', 'DF', 'E7', 'EF', 'F7', 'FF'],
],
});
};
exports.create16bitRmTable = create16bitRmTable;