x86 table: Add remaining 0f instructions, simplify gen scripts
This commit is contained in:
parent
7f62bb8852
commit
ded423b1c5
|
@ -495,15 +495,6 @@ function gen_table()
|
|||
{
|
||||
let encoding = by_opcode0f[opcode];
|
||||
|
||||
if(!encoding)
|
||||
{
|
||||
encoding = [
|
||||
{
|
||||
opcode: 0x0F00 | opcode,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
console.assert(encoding && encoding.length);
|
||||
|
||||
let opcode_hex = hex(opcode, 2);
|
||||
|
|
|
@ -426,15 +426,6 @@ function gen_table()
|
|||
{
|
||||
let encoding = by_opcode0f[opcode];
|
||||
|
||||
if(!encoding)
|
||||
{
|
||||
encoding = [
|
||||
{
|
||||
opcode: 0x0F00 | opcode,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
console.assert(encoding && encoding.length);
|
||||
|
||||
let opcode_hex = hex(opcode, 2);
|
||||
|
|
|
@ -574,15 +574,6 @@ function gen_table()
|
|||
{
|
||||
let encoding = by_opcode0f[opcode];
|
||||
|
||||
if(!encoding)
|
||||
{
|
||||
encoding = [
|
||||
{
|
||||
opcode: 0x0F00 | opcode,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
console.assert(encoding && encoding.length);
|
||||
|
||||
let opcode_hex = hex(opcode, 2);
|
||||
|
|
|
@ -257,7 +257,6 @@ const encodings = [
|
|||
{ opcode: 0x0F07, skip: 1 },
|
||||
{ opcode: 0x0F08, skip: 1 },
|
||||
{ opcode: 0x0F09, skip: 1 },
|
||||
{ opcode: 0x0F09, skip: 1 },
|
||||
{ opcode: 0x0F0A, skip: 1 },
|
||||
{ opcode: 0x0F0B, skip: 1 },
|
||||
{ opcode: 0x0F0C, skip: 1 },
|
||||
|
@ -266,12 +265,22 @@ const encodings = [
|
|||
{ opcode: 0x0F0F, skip: 1 },
|
||||
|
||||
{ opcode: 0x0F18, only_mem: 1, e: 1, },
|
||||
{ opcode: 0x0F19, skip: 1 },
|
||||
{ opcode: 0x0F1A, skip: 1 },
|
||||
{ opcode: 0x0F1B, skip: 1 },
|
||||
{ opcode: 0x0F1C, skip: 1 },
|
||||
{ opcode: 0x0F1D, skip: 1 },
|
||||
{ opcode: 0x0F1E, skip: 1 },
|
||||
{ opcode: 0x0F1F, e: 1, },
|
||||
|
||||
{ opcode: 0x0F20, ignore_mod: 1, e: 1, skip: 1 },
|
||||
{ opcode: 0x0F21, ignore_mod: 1, e: 1, skip: 1 },
|
||||
{ opcode: 0x0F22, ignore_mod: 1, e: 1, skip: 1 },
|
||||
{ opcode: 0x0F23, ignore_mod: 1, e: 1, skip: 1 },
|
||||
{ opcode: 0x0F24, skip: 1 },
|
||||
{ opcode: 0x0F25, skip: 1 },
|
||||
{ opcode: 0x0F26, skip: 1 },
|
||||
{ opcode: 0x0F27, skip: 1 },
|
||||
|
||||
{ opcode: 0x0F30, skip: 1 },
|
||||
{ opcode: 0x0F31, skip: 1 },
|
||||
|
@ -279,6 +288,16 @@ const encodings = [
|
|||
{ opcode: 0x0F33, skip: 1 },
|
||||
{ opcode: 0x0F34, skip: 1, block_boundary: 1, }, // sysenter
|
||||
{ opcode: 0x0F35, skip: 1, block_boundary: 1, no_next_instruction: 1, }, // sysexit
|
||||
{ opcode: 0x0F36, skip: 1 },
|
||||
{ opcode: 0x0F37, skip: 1 },
|
||||
{ opcode: 0x0F38, skip: 1 },
|
||||
{ opcode: 0x0F39, skip: 1 },
|
||||
{ opcode: 0x0F3A, skip: 1 },
|
||||
{ opcode: 0x0F3B, skip: 1 },
|
||||
{ opcode: 0x0F3C, skip: 1 },
|
||||
{ opcode: 0x0F3D, skip: 1 },
|
||||
{ opcode: 0x0F3E, skip: 1 },
|
||||
{ opcode: 0x0F3F, skip: 1 },
|
||||
|
||||
{ opcode: 0x0F40, nonfaulting: 1, e: 1, os: 1, },
|
||||
{ opcode: 0x0F41, nonfaulting: 1, e: 1, os: 1, },
|
||||
|
@ -357,6 +376,11 @@ const encodings = [
|
|||
{ opcode: 0x0FAC, nonfaulting: 1, os: 1, e: 1, imm8: 1, mask_flags: af | of, },
|
||||
{ opcode: 0x0FAD, nonfaulting: 1, os: 1, e: 1, mask_flags: af | of, },
|
||||
|
||||
{ opcode: 0x0FA6, skip: 1 },
|
||||
{ opcode: 0x0FA7, skip: 1 },
|
||||
|
||||
{ opcode: 0x0FAA, skip: 1 },
|
||||
|
||||
{ opcode: 0x0FAE, e: 1, fixed_g: 0, only_mem: 1, skip: 1, }, // fxsave, ...
|
||||
{ opcode: 0x0FAE, e: 1, fixed_g: 1, only_mem: 1, skip: 1, },
|
||||
{ opcode: 0x0FAE, e: 1, fixed_g: 2, only_mem: 1, skip: 1, },
|
||||
|
@ -383,6 +407,8 @@ const encodings = [
|
|||
|
||||
{ opcode: 0xF30FB8, os: 1, e: 1 }, // popcnt
|
||||
|
||||
{ opcode: 0x0FB9, }, // ud2
|
||||
|
||||
{ opcode: 0x0FBE, nonfaulting: 1, os: 1, e: 1, }, // movsx
|
||||
{ opcode: 0x0FBF, nonfaulting: 1, os: 1, e: 1, },
|
||||
|
||||
|
@ -430,6 +456,7 @@ const encodings = [
|
|||
{ opcode: 0x660F28, e: 1 },
|
||||
{ opcode: 0x0F29, e: 1 },
|
||||
{ opcode: 0x660F29, e: 1 },
|
||||
{ opcode: 0x0F2A, skip: 1 },
|
||||
{ opcode: 0x0F2B, only_mem: 1, e: 1 },
|
||||
{ opcode: 0x660F2B, only_mem: 1, e: 1 },
|
||||
|
||||
|
@ -437,9 +464,15 @@ const encodings = [
|
|||
{ opcode: 0x0F2C, e: 1, skip: 1, },
|
||||
{ opcode: 0xF30F2C, e: 1, skip: 1, },
|
||||
{ opcode: 0x660F2C, e: 1, skip: 1, },
|
||||
{ opcode: 0x0F2D, skip: 1 },
|
||||
{ opcode: 0x0F2E, skip: 1 },
|
||||
{ opcode: 0x0F2F, skip: 1 },
|
||||
|
||||
{ opcode: 0x0F50, only_reg: 1, e: 1 },
|
||||
{ opcode: 0x660F50, only_reg: 1, e: 1 },
|
||||
{ opcode: 0x0F51, skip: 1 },
|
||||
{ opcode: 0x0F52, skip: 1 },
|
||||
{ opcode: 0x0F53, skip: 1 },
|
||||
{ opcode: 0x0F54, e: 1 },
|
||||
{ opcode: 0x660F54, e: 1 },
|
||||
{ opcode: 0x0F55, e: 1 },
|
||||
|
@ -449,6 +482,15 @@ const encodings = [
|
|||
{ opcode: 0x0F57, e: 1 },
|
||||
{ opcode: 0x660F57, e: 1 },
|
||||
|
||||
{ opcode: 0x0F58, skip: 1 },
|
||||
{ opcode: 0x0F59, skip: 1 },
|
||||
{ opcode: 0x0F5A, skip: 1 },
|
||||
{ opcode: 0x0F5B, skip: 1 },
|
||||
{ opcode: 0x0F5C, skip: 1 },
|
||||
{ opcode: 0x0F5D, skip: 1 },
|
||||
{ opcode: 0x0F5E, skip: 1 },
|
||||
{ opcode: 0x0F5F, skip: 1 },
|
||||
|
||||
{ opcode: 0x660F60, e: 1 },
|
||||
{ opcode: 0x0F60, e: 1 },
|
||||
{ opcode: 0x660F61, e: 1 },
|
||||
|
@ -516,6 +558,13 @@ const encodings = [
|
|||
{ opcode: 0x660F76, e: 1, },
|
||||
{ opcode: 0x0F77 },
|
||||
|
||||
{ opcode: 0x0F78, skip: 1 },
|
||||
{ opcode: 0x0F79, skip: 1 },
|
||||
{ opcode: 0x0F7A, skip: 1 },
|
||||
{ opcode: 0x0F7B, skip: 1 },
|
||||
{ opcode: 0x0F7C, skip: 1 },
|
||||
{ opcode: 0x0F7D, skip: 1 },
|
||||
|
||||
{ opcode: 0x0F7E, e: 1 },
|
||||
{ opcode: 0x660F7E, e: 1 },
|
||||
{ opcode: 0xF30F7E, e: 1 },
|
||||
|
@ -523,6 +572,8 @@ const encodings = [
|
|||
{ opcode: 0x660F7F, e: 1 },
|
||||
{ opcode: 0xF30F7F, e: 1 },
|
||||
|
||||
{ opcode: 0x0FC2, skip: 1, },
|
||||
|
||||
{ opcode: 0x0FC3, e: 1, only_mem: 1, },
|
||||
{ opcode: 0x0FC4, e: 1, imm8: 1 },
|
||||
{ opcode: 0x660FC4, e: 1, imm8: 1 },
|
||||
|
@ -530,6 +581,10 @@ const encodings = [
|
|||
{ opcode: 0x0FC5, e: 1, only_reg: 1, imm8: 1 },
|
||||
{ opcode: 0x660FC5, e: 1, only_reg: 1, imm8: 1, },
|
||||
|
||||
{ opcode: 0x0FC6, skip: 1, },
|
||||
|
||||
{ opcode: 0x0FD0, skip: 1, },
|
||||
|
||||
{ opcode: 0x0FD1, e: 1 },
|
||||
{ opcode: 0x660FD1, e: 1 },
|
||||
{ opcode: 0x0FD2, e: 1 },
|
||||
|
@ -600,6 +655,8 @@ const encodings = [
|
|||
{ opcode: 0x0FEF, e: 1 },
|
||||
{ opcode: 0x660FEF, e: 1 },
|
||||
|
||||
{ opcode: 0x0FF0, skip: 1, },
|
||||
|
||||
{ opcode: 0x0FF1, e: 1 },
|
||||
{ opcode: 0x660FF1, e: 1 },
|
||||
{ opcode: 0x0FF2, e: 1 },
|
||||
|
@ -631,6 +688,8 @@ const encodings = [
|
|||
{ opcode: 0x660FFD, e: 1 },
|
||||
{ opcode: 0x0FFE, e: 1 },
|
||||
{ opcode: 0x660FFE, e: 1 },
|
||||
|
||||
{ opcode: 0x0FFF, },
|
||||
];
|
||||
|
||||
for(let i = 0; i < 8; i++)
|
||||
|
|
Loading…
Reference in a new issue