Files
mirror-processhacker/trunk/ProcessHacker/Asm/AsmData.cs
T
wj32 9cd1775552 add disassembly window
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@107 21ef857c-d57f-4fe0-8362-d861dc6d29cd
2008-11-22 07:49:23 +00:00

683 lines
96 KiB
C#

/* Original file: asmserv.c
*
* Free Disassembler and Assembler -- Command data and service routines
*
* Copyright (C) 2008 wj32
* Copyright (C) 2001 Oleh Yuschuk
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
using System;
using System.Collections.Generic;
using System.Text;
namespace ProcessHacker
{
public partial class Asm
{
public static string[][] RegName =
{
new string[] { "AL", "CL", "DL", "BL", "AH", "CH", "DH", "BH", "R8" },
new string[] { "AX", "CX", "DX", "BX", "SP", "BP", "SI", "DI", "R16" },
new string[] { "EAX", "ECX", "EDX", "EBX", "ESP", "EBP", "ESI", "EDI", "R32" }
};
public static string[] SegName = new string[] { "ES", "CS", "SS", "DS", "FS", "GS", "SEG?", "SEG?" };
public static string[] SizeName = new string[]
{
"(0-BYTE)", "BYTE", "WORD", "(3-BYTE)",
"DWORD", "(5-BYTE)", "FWORD", "(7-BYTE)",
"QWORD", "(9-BYTE)", "TBYTE"
};
public static TAddrDec[] Addr16 = new TAddrDec[]
{
new TAddrDec() { DefSeg = SEG_DS, Descr = "BX+SI" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "BX+DI" },
new TAddrDec() { DefSeg = SEG_SS, Descr = "BP+SI" },
new TAddrDec() { DefSeg = SEG_SS, Descr = "BP+DI" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "SI" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "DI" },
new TAddrDec() { DefSeg = SEG_SS, Descr = "BP" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "BX" }
};
public static TAddrDec[] Addr32 = new TAddrDec[]
{
new TAddrDec() { DefSeg = SEG_DS, Descr = "EAX" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "ECX" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "EDX" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "EBX" },
new TAddrDec() { DefSeg = SEG_SS, Descr = "" },
new TAddrDec() { DefSeg = SEG_SS, Descr = "EBP" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "ESI" },
new TAddrDec() { DefSeg = SEG_DS, Descr = "EDI" },
};
public static string[] FpuName = { "ST0", "ST1", "ST2", "ST3", "ST4", "ST5", "ST6", "ST7", "FPU" };
public static string[] MmxName = { "MM0", "MM1", "MM2", "MM3", "MM4", "MM5", "MM6", "MM7", "MMX" };
public static string[] CrName = { "CR0", "CR1", "CR2", "CR3", "CR4", "CR5", "CR6", "CR7", "CRX" };
public static string[] DrName = { "DR0", "DR1", "DR2", "DR3", "DR4", "DR5", "DR6", "DR7", "DRX" };
// produced using Notepad++ with regex:
// Replace { *([^,]+), *([^,]+), *([^,]+), *([^,]+), *([^,]+), *([^,]+), *([^,]+), *([^,]+), *([^}]+)},
// With new TCmdData() { Mask = \1, Code = \2, Length = \3, Bits = \4, Arg1 = \5, Arg2 = \6, Arg3 = \7, Type = \8, Name = \9 },
public static TCmdData[] CmdData =
{
new TCmdData() { Mask = 0x0000FF, Code = 0x000090, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "NOP" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00008A, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "MOV" },
new TCmdData() { Mask = 0x0000F8, Code = 0x000050, Length = 1, Bits = 00, Arg1 = RCM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+0, Name = "PUSH" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000088, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "MOV" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E8, Length = 1, Bits = 00, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+0, Name = "CALL" },
new TCmdData() { Mask = 0x0000FD, Code = 0x000068, Length = 1, Bits = SS, Arg1 = IMM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+0, Name = "PUSH" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00008D, Length = 1, Bits = 00, Arg1 = REG, Arg2 = MMA, Arg3 = NNN, Type = C_CMD+0, Name = "LEA" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000074, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JE,JZ" },
new TCmdData() { Mask = 0x0000F8, Code = 0x000058, Length = 1, Bits = 00, Arg1 = RCM, Arg2 = NNN, Arg3 = NNN, Type = C_POP+0, Name = "POP" },
new TCmdData() { Mask = 0x0038FC, Code = 0x000080, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+1, Name = "ADD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000075, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNZ,JNE" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000EB, Length = 1, Bits = 00, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMP+0, Name = "JMP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E9, Length = 1, Bits = 00, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMP+0, Name = "JMP" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000084, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "TEST" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0000C6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+1, Name = "MOV" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000032, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "XOR" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00003A, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMP" },
new TCmdData() { Mask = 0x0038FC, Code = 0x003880, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+1, Name = "CMP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010FF, Length = 1, Bits = 00, Arg1 = MRJ, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+0, Name = "CALL" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000C3, Length = 1, Bits = 00, Arg1 = PRN, Arg2 = NNN, Arg3 = NNN, Type = C_RET+0, Name = "RETN,RET" },
new TCmdData() { Mask = 0x0000F0, Code = 0x0000B0, Length = 1, Bits = W3, Arg1 = RCM, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+0, Name = "MOV" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000A0, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMA, Arg3 = NNN, Type = C_CMD+0, Name = "MOV" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00840F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JE,JZ" },
new TCmdData() { Mask = 0x0000F8, Code = 0x000040, Length = 1, Bits = 00, Arg1 = RCM, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "INC" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0000F6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+1, Name = "TEST" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000A2, Length = 1, Bits = WW, Arg1 = IMA, Arg2 = RAC, Arg3 = NNN, Type = C_CMD+0, Name = "MOV" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00002A, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "SUB" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00007E, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JLE,JNG" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00850F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNZ,JNE" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000C2, Length = 1, Bits = 00, Arg1 = IM2, Arg2 = PRN, Arg3 = NNN, Type = C_RET+0, Name = "RETN" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030FF, Length = 1, Bits = 00, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+1, Name = "PUSH" },
new TCmdData() { Mask = 0x0038FC, Code = 0x000880, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+1, Name = "OR" },
new TCmdData() { Mask = 0x0038FC, Code = 0x002880, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+1, Name = "SUB" },
new TCmdData() { Mask = 0x0000F8, Code = 0x000048, Length = 1, Bits = 00, Arg1 = RCM, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "DEC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00BF0F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MR2, Arg3 = NNN, Type = C_CMD+1, Name = "MOVSX" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00007C, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JL,JNGE" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000002, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "ADD" },
new TCmdData() { Mask = 0x0038FC, Code = 0x002080, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+1, Name = "AND" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00003C, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+0, Name = "CMP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020FF, Length = 1, Bits = 00, Arg1 = MRJ, Arg2 = NNN, Arg3 = NNN, Type = C_JMP+0, Name = "JMP" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0010F6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "NOT" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0028C0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMS, Arg3 = NNN, Type = C_CMD+1, Name = "SHR" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000038, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "CMP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00007D, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JGE,JNL" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00007F, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JG,JNLE" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0020C0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMS, Arg3 = NNN, Type = C_CMD+1, Name = "SHL" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00001A, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "SBB" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0018F6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "NEG" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000C9, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "LEAVE" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000060, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "&PUSHA*" },
new TCmdData() { Mask = 0x0038FF, Code = 0x00008F, Length = 1, Bits = 00, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_POP+1, Name = "POP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000061, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "&POPA*" },
new TCmdData() { Mask = 0x0000F8, Code = 0x000090, Length = 1, Bits = 00, Arg1 = RAC, Arg2 = RCM, Arg3 = NNN, Type = C_CMD+0, Name = "XCHG" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000086, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "XCHG" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000000, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "ADD" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000010, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "ADC" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000012, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "ADC" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000020, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "AND" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000022, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "AND" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000008, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "OR" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00000A, Length = 1, Bits = WW, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "OR" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000028, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "SUB" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000018, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SBB" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000030, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+0, Name = "XOR" },
new TCmdData() { Mask = 0x0038FC, Code = 0x001080, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "ADC" },
new TCmdData() { Mask = 0x0038FC, Code = 0x001880, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "SBB" },
new TCmdData() { Mask = 0x0038FC, Code = 0x003080, Length = 1, Bits = WS, Arg1 = MRG, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+1, Name = "XOR" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000004, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+0, Name = "ADD" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000014, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "ADC" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000024, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+0, Name = "AND" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00000C, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+0, Name = "OR" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00002C, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+0, Name = "SUB" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00001C, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMM, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SBB" },
new TCmdData() { Mask = 0x0000FE, Code = 0x000034, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+0, Name = "XOR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0000FE, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "INC" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0008FE, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "DEC" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000A8, Length = 1, Bits = WW, Arg1 = RAC, Arg2 = IMU, Arg3 = NNN, Type = C_CMD+0, Name = "TEST" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0020F6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "MUL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0028F6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "IMUL" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AF0F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "IMUL" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00006B, Length = 1, Bits = 00, Arg1 = REG, Arg2 = MRG, Arg3 = IMX, Type = C_CMD+C_RARE+0, Name = "IMUL" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000069, Length = 1, Bits = 00, Arg1 = REG, Arg2 = MRG, Arg3 = IMM, Type = C_CMD+C_RARE+0, Name = "IMUL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0030F6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "DIV" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0038F6, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "IDIV" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000098, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "&CBW:CWDE" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000099, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "&CWD:CDQ" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0000D0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = C01, Arg3 = NNN, Type = C_CMD+1, Name = "ROL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0008D0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = C01, Arg3 = NNN, Type = C_CMD+1, Name = "ROR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0010D0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = C01, Arg3 = NNN, Type = C_CMD+1, Name = "RCL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0018D0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = C01, Arg3 = NNN, Type = C_CMD+1, Name = "RCR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0020D0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = C01, Arg3 = NNN, Type = C_CMD+1, Name = "SHL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0028D0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = C01, Arg3 = NNN, Type = C_CMD+1, Name = "SHR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0038D0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = C01, Arg3 = NNN, Type = C_CMD+1, Name = "SAR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0000D2, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = RCL, Arg3 = NNN, Type = C_CMD+1, Name = "ROL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0008D2, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = RCL, Arg3 = NNN, Type = C_CMD+1, Name = "ROR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0010D2, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = RCL, Arg3 = NNN, Type = C_CMD+1, Name = "RCL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0018D2, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = RCL, Arg3 = NNN, Type = C_CMD+1, Name = "RCR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0020D2, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = RCL, Arg3 = NNN, Type = C_CMD+1, Name = "SHL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0028D2, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = RCL, Arg3 = NNN, Type = C_CMD+1, Name = "SHR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0038D2, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = RCL, Arg3 = NNN, Type = C_CMD+1, Name = "SAR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0000C0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMS, Arg3 = NNN, Type = C_CMD+1, Name = "ROL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0008C0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMS, Arg3 = NNN, Type = C_CMD+1, Name = "ROR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0010C0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMS, Arg3 = NNN, Type = C_CMD+1, Name = "RCL" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0018C0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMS, Arg3 = NNN, Type = C_CMD+1, Name = "RCR" },
new TCmdData() { Mask = 0x0038FE, Code = 0x0038C0, Length = 1, Bits = WW, Arg1 = MRG, Arg2 = IMS, Arg3 = NNN, Type = C_CMD+1, Name = "SAR" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000070, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JO" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000071, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNO" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000072, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JB,JC" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000073, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNB,JNC" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000076, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JBE,JNA" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000077, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JA,JNBE" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000078, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JS" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000079, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNS" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00007A, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+C_RARE+0, Name = "JPE,JP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00007B, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+C_RARE+0, Name = "JPO,JNP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E3, Length = 1, Bits = 00, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+C_RARE+0, Name = "$JCXZ:JECXZ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00800F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JO" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00810F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNO" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00820F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JB,JC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00830F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNB,JNC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00860F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JBE,JNA" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00870F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JA,JNBE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00880F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00890F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JNS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x008A0F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+C_RARE+0, Name = "JPE,JP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x008B0F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+C_RARE+0, Name = "JPO,JNP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x008C0F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JL,JNGE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x008D0F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JGE,JNL" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x008E0F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JLE,JNG" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x008F0F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JG,JNLE" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000F8, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "CLC" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000F9, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "STC" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000F5, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "CMC" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000FC, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "CLD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000FD, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "STD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000FA, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "CLI" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000FB, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "STI" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00008C, Length = 1, Bits = FF, Arg1 = MRG, Arg2 = SGM, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "MOV" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00008E, Length = 1, Bits = FF, Arg1 = SGM, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "MOV" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000A6, Length = 1, Bits = WW, Arg1 = MSO, Arg2 = MDE, Arg3 = NNN, Type = C_CMD+1, Name = "CMPS" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000AC, Length = 1, Bits = WW, Arg1 = MSO, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "LODS" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000A4, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = MSO, Arg3 = NNN, Type = C_CMD+1, Name = "MOVS" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000AE, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = PAC, Arg3 = NNN, Type = C_CMD+1, Name = "SCAS" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000AA, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = PAC, Arg3 = NNN, Type = C_CMD+1, Name = "STOS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00A4F3, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = MSO, Arg3 = PCX, Type = C_REP+1, Name = "REP MOVS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00ACF3, Length = 1, Bits = WW, Arg1 = MSO, Arg2 = PAC, Arg3 = PCX, Type = C_REP+C_RARE+1, Name = "REP LODS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00AAF3, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = PAC, Arg3 = PCX, Type = C_REP+1, Name = "REP STOS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00A6F3, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = MSO, Arg3 = PCX, Type = C_REP+1, Name = "REPE CMPS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00AEF3, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = PAC, Arg3 = PCX, Type = C_REP+1, Name = "REPE SCAS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00A6F2, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = MSO, Arg3 = PCX, Type = C_REP+1, Name = "REPNE CMPS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00AEF2, Length = 1, Bits = WW, Arg1 = MDE, Arg2 = PAC, Arg3 = PCX, Type = C_REP+1, Name = "REPNE SCAS" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000EA, Length = 1, Bits = 00, Arg1 = JMF, Arg2 = NNN, Arg3 = NNN, Type = C_JMP+C_RARE+0, Name = "JMP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028FF, Length = 1, Bits = 00, Arg1 = MMS, Arg2 = NNN, Arg3 = NNN, Type = C_JMP+C_RARE+1, Name = "JMP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00009A, Length = 1, Bits = 00, Arg1 = JMF, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+C_RARE+0, Name = "CALL" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018FF, Length = 1, Bits = 00, Arg1 = MMS, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+C_RARE+1, Name = "CALL" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000CB, Length = 1, Bits = 00, Arg1 = PRF, Arg2 = NNN, Arg3 = NNN, Type = C_RET+C_RARE+0, Name = "RETF" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000CA, Length = 1, Bits = 00, Arg1 = IM2, Arg2 = PRF, Arg3 = NNN, Type = C_RET+C_RARE+0, Name = "RETF" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A40F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = IMS, Type = C_CMD+0, Name = "SHLD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AC0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = IMS, Type = C_CMD+0, Name = "SHRD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A50F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = RCL, Type = C_CMD+0, Name = "SHLD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AD0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = RCL, Type = C_CMD+0, Name = "SHRD" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C80F, Length = 2, Bits = 00, Arg1 = RCM, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "BSWAP" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00C00F, Length = 2, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "XADD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E2, Length = 1, Bits = LL, Arg1 = JOB, Arg2 = PCX, Arg3 = NNN, Type = C_JMC+0, Name = "$LOOP*" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E1, Length = 1, Bits = LL, Arg1 = JOB, Arg2 = PCX, Arg3 = NNN, Type = C_JMC+0, Name = "$LOOP*E" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E0, Length = 1, Bits = LL, Arg1 = JOB, Arg2 = PCX, Arg3 = NNN, Type = C_JMC+0, Name = "$LOOP*NE" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000C8, Length = 1, Bits = 00, Arg1 = IM2, Arg2 = IM1, Arg3 = NNN, Type = C_CMD+0, Name = "ENTER" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000E4, Length = 1, Bits = WP, Arg1 = RAC, Arg2 = IM1, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "IN" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000EC, Length = 1, Bits = WP, Arg1 = RAC, Arg2 = RDX, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "IN" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000E6, Length = 1, Bits = WP, Arg1 = IM1, Arg2 = RAC, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "OUT" },
new TCmdData() { Mask = 0x0000FE, Code = 0x0000EE, Length = 1, Bits = WP, Arg1 = RDX, Arg2 = RAC, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "OUT" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00006C, Length = 1, Bits = WP, Arg1 = MDE, Arg2 = RDX, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "INS" },
new TCmdData() { Mask = 0x0000FE, Code = 0x00006E, Length = 1, Bits = WP, Arg1 = RDX, Arg2 = MDE, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "OUTS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x006CF3, Length = 1, Bits = WP, Arg1 = MDE, Arg2 = RDX, Arg3 = PCX, Type = C_REP+C_RARE+1, Name = "REP INS" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x006EF3, Length = 1, Bits = WP, Arg1 = RDX, Arg2 = MDE, Arg3 = PCX, Type = C_REP+C_RARE+1, Name = "REP OUTS" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000037, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "AAA" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00003F, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "AAS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x000AD4, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "AAM" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000D4, Length = 1, Bits = 00, Arg1 = IM1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "AAM" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x000AD5, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "AAD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000D5, Length = 1, Bits = 00, Arg1 = IM1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "AAD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000027, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "DAA" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00002F, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "DAS" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000F4, Length = 1, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_PRI+C_RARE+0, Name = "HLT" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00000E, Length = 1, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+C_RARE+0, Name = "PUSH" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000016, Length = 1, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+C_RARE+0, Name = "PUSH" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00001E, Length = 1, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+C_RARE+0, Name = "PUSH" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000006, Length = 1, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+C_RARE+0, Name = "PUSH" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A00F, Length = 2, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+C_RARE+0, Name = "PUSH" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A80F, Length = 2, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+C_RARE+0, Name = "PUSH" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00001F, Length = 1, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_POP+C_RARE+0, Name = "POP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000007, Length = 1, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_POP+C_RARE+0, Name = "POP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000017, Length = 1, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_POP+C_RARE+0, Name = "POP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A10F, Length = 2, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_POP+C_RARE+0, Name = "POP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A90F, Length = 2, Bits = 00, Arg1 = SCM, Arg2 = NNN, Arg3 = NNN, Type = C_POP+C_RARE+0, Name = "POP" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000D7, Length = 1, Bits = 00, Arg1 = MXL, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "XLAT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00BE0F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MR1, Arg3 = NNN, Type = C_CMD+1, Name = "MOVSX" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00B60F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MR1, Arg3 = NNN, Type = C_CMD+1, Name = "MOVZX" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00B70F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MR2, Arg3 = NNN, Type = C_CMD+1, Name = "MOVZX" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00009B, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "WAIT" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00009F, Length = 1, Bits = 00, Arg1 = PAH, Arg2 = PFL, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LAHF" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00009E, Length = 1, Bits = 00, Arg1 = PFL, Arg2 = PAH, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SAHF" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00009C, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_PSH+0, Name = "&PUSHF*" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00009D, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLG+0, Name = "&POPF*" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000CD, Length = 1, Bits = 00, Arg1 = IM1, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+C_RARE+0, Name = "INT" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000CC, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+C_RARE+0, Name = "INT3" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000CE, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+C_RARE+0, Name = "INTO" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000CF, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_RTF+C_RARE+0, Name = "&IRET*" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00900F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETO" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00910F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETNO" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00920F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETB,SETC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00930F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETNB,SETNC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00940F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETE,SETZ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00950F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETNE,SETNZ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00960F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETBE,SETNA" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00970F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETA,SETNBE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00980F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00990F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETNS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x009A0F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SETPE,SETP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x009B0F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SETPO,SETNP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x009C0F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETL,SETNGE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x009D0F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETGE,SETNL" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x009E0F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETLE,SETNG" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x009F0F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SETG,SETNLE" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x20BA0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = IM1, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BT" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x28BA0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = IM1, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BTS" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x30BA0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = IM1, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BTR" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x38BA0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = IM1, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BTC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A30F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AB0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BTS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00B30F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BTR" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00BB0F, Length = 2, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "BTC" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000C5, Length = 1, Bits = 00, Arg1 = REG, Arg2 = MML, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LDS" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000C4, Length = 1, Bits = 00, Arg1 = REG, Arg2 = MML, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LES" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00B40F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MML, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LFS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00B50F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MML, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LGS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00B20F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MML, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LSS" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000063, Length = 1, Bits = 00, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "ARPL" },
new TCmdData() { Mask = 0x0000FF, Code = 0x000062, Length = 1, Bits = 00, Arg1 = REG, Arg2 = MMB, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "BOUND" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00BC0F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "BSF" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00BD0F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "BSR" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00060F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "CLTS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00400F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVO" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00410F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVNO" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00420F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVB,CMOVC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00430F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVNB,CMOVNC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00440F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVE,CMOVZ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00450F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVNE,CMOVNZ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00460F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVBE,CMOVNA" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00470F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVA,CMOVNBE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00480F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00490F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVNS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x004A0F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVPE,CMOVP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x004B0F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVPO,CMOVNP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x004C0F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVL,CMOVNGE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x004D0F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVGE,CMOVNL" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x004E0F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVLE,CMOVNG" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x004F0F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVG,CMOVNLE" },
new TCmdData() { Mask = 0x00FEFF, Code = 0x00B00F, Length = 2, Bits = WW, Arg1 = MRG, Arg2 = REG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "CMPXCHG" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x08C70F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+1, Name = "CMPXCHG8B" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A20F, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "CPUID" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00080F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "INVD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00020F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LAR" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00030F, Length = 2, Bits = 00, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LSL" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x38010F, Length = 2, Bits = PR, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "INVLPG" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00090F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "WBINVD" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x10010F, Length = 2, Bits = PR, Arg1 = MM6, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LGDT" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x00010F, Length = 2, Bits = 00, Arg1 = MM6, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SGDT" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x18010F, Length = 2, Bits = PR, Arg1 = MM6, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LIDT" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x08010F, Length = 2, Bits = 00, Arg1 = MM6, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SIDT" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x10000F, Length = 2, Bits = PR, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LLDT" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x00000F, Length = 2, Bits = 00, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SLDT" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x18000F, Length = 2, Bits = PR, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LTR" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x08000F, Length = 2, Bits = 00, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "STR" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x30010F, Length = 2, Bits = PR, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "LMSW" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x20010F, Length = 2, Bits = 00, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SMSW" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x20000F, Length = 2, Bits = 00, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "VERR" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x28000F, Length = 2, Bits = 00, Arg1 = MR2, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "VERW" },
new TCmdData() { Mask = 0xC0FFFF, Code = 0xC0220F, Length = 2, Bits = PR, Arg1 = CRX, Arg2 = RR4, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "MOV" },
new TCmdData() { Mask = 0xC0FFFF, Code = 0xC0200F, Length = 2, Bits = 00, Arg1 = RR4, Arg2 = CRX, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "MOV" },
new TCmdData() { Mask = 0xC0FFFF, Code = 0xC0230F, Length = 2, Bits = PR, Arg1 = DRX, Arg2 = RR4, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "MOV" },
new TCmdData() { Mask = 0xC0FFFF, Code = 0xC0210F, Length = 2, Bits = PR, Arg1 = RR4, Arg2 = DRX, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "MOV" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00310F, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "RDTSC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00320F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "RDMSR" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00300F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "WRMSR" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00330F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "RDPMC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AA0F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_RTF+C_RARE+0, Name = "RSM" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x000B0F, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "UD2" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00340F, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SYSENTER" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00350F, Length = 2, Bits = PR, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SYSEXIT" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000D6, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "SALC" },
// FPU instructions. Never change the order of instructions!
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F0D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "F2XM1" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E0D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FCHS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E1D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FABS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E2DB, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FCLEX" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E3DB, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FINIT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F6D9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FDECSTP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F7D9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FINCSTP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E4D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FTST" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FAD9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSQRT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FED9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSIN" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FFD9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FCOS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FBD9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSINCOS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F2D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FPTAN" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F3D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = PS1, Arg3 = NNN, Type = C_FLT+0, Name = "FPATAN" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F8D9, Length = 2, Bits = 00, Arg1 = PS1, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FPREM" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F5D9, Length = 2, Bits = 00, Arg1 = PS1, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FPREM1" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F1D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = PS1, Arg3 = NNN, Type = C_FLT+0, Name = "FYL2X" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F9D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = PS1, Arg3 = NNN, Type = C_FLT+0, Name = "FYL2XP1" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FCD9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FRNDINT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E8D9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLD1" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E9D9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDL2T" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EAD9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDL2E" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EBD9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDPI" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00ECD9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDLG2" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EDD9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDLN2" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EED9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDZ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FDD9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = PS1, Arg3 = NNN, Type = C_FLT+0, Name = "FSCALE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D0D9, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FNOP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E0DF, Length = 2, Bits = FF, Arg1 = RAX, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSTSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E5D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FXAM" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F4D9, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FXTRACT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D9DE, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = PS1, Arg3 = NNN, Type = C_FLT+0, Name = "FCOMPP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E9DA, Length = 2, Bits = 00, Arg1 = PS0, Arg2 = PS1, Arg3 = NNN, Type = C_FLT+0, Name = "FUCOMPP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C0DD, Length = 2, Bits = 00, Arg1 = RST, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FFREE" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C0DA, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVB" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C8DA, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVE" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D0DA, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVBE" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D8DA, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVU" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C0DB, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVNB" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C8DB, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVNE" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D0DB, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVNBE" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D8DB, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCMOVNU" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F0DB, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCOMI" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F0DF, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FCOMIP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E8DB, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FUCOMI" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E8DF, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FUCOMIP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C0D8, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FADD" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C0DC, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FADD" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C0DE, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FADDP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E0D8, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FSUB" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E8DC, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FSUB" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E8DE, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FSUBP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E8D8, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FSUBR" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E0DC, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FSUBR" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E0DE, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FSUBRP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C8D8, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FMUL" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C8DC, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FMUL" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C8DE, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FMULP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D0D8, Length = 2, Bits = 00, Arg1 = RST, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FCOM" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D8D8, Length = 2, Bits = 00, Arg1 = RST, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FCOMP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E0DD, Length = 2, Bits = 00, Arg1 = RST, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FUCOM" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00E8DD, Length = 2, Bits = 00, Arg1 = RST, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FUCOMP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F0D8, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FDIV" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F8DC, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FDIV" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F8DE, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FDIVP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F8D8, Length = 2, Bits = 00, Arg1 = RS0, Arg2 = RST, Arg3 = NNN, Type = C_FLT+0, Name = "FDIVR" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F0DC, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FDIVR" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00F0DE, Length = 2, Bits = 00, Arg1 = RST, Arg2 = RS0, Arg3 = NNN, Type = C_FLT+0, Name = "FDIVRP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C0D9, Length = 2, Bits = 00, Arg1 = RST, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLD" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D0DD, Length = 2, Bits = 00, Arg1 = RST, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FST" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00D8DD, Length = 2, Bits = 00, Arg1 = RST, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FSTP" },
new TCmdData() { Mask = 0x00F8FF, Code = 0x00C8D9, Length = 2, Bits = 00, Arg1 = RST, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+0, Name = "FXCH" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FADD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FADD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIADD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIADD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FSUB" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FSUB" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FISUB" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FISUB" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FSUBR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FSUBR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FISUBR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FISUBR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0008D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FMUL" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0008DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FMUL" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0008DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIMUL" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0008DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIMUL" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FCOM" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FCOM" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FCOMP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FCOMP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FDIV" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FDIV" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIDIV" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIDIV" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038D8, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FDIVR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038DC, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FDIVR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIDIVR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIDIVR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020DF, Length = 1, Bits = 00, Arg1 = MDA, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+C_RARE+1, Name = "FBLD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030DF, Length = 1, Bits = 00, Arg1 = MDA, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+C_RARE+1, Name = "FBSTP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FICOM" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FICOM" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018DE, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FICOMP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018DA, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FICOMP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000DF, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+1, Name = "FILD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000DB, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+1, Name = "FILD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028DF, Length = 1, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+1, Name = "FILD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010DF, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIST" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010DB, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FIST" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018DF, Length = 1, Bits = 00, Arg1 = MD2, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FISTP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018DB, Length = 1, Bits = 00, Arg1 = MD4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FISTP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038DF, Length = 1, Bits = 00, Arg1 = MD8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FISTP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000D9, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+1, Name = "FLD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0000DD, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+1, Name = "FLD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028DB, Length = 1, Bits = 00, Arg1 = MFA, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+1, Name = "FLD" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010D9, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FST" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0010DD, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FST" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018D9, Length = 1, Bits = 00, Arg1 = MF4, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FSTP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0018DD, Length = 1, Bits = 00, Arg1 = MF8, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FSTP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038DB, Length = 1, Bits = 00, Arg1 = MFA, Arg2 = PS0, Arg3 = NNN, Type = C_FLT+1, Name = "FSTP" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0028D9, Length = 1, Bits = 00, Arg1 = MB2, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDCW" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038D9, Length = 1, Bits = 00, Arg1 = MB2, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSTCW" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020D9, Length = 1, Bits = 00, Arg1 = MFE, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FLDENV" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030D9, Length = 1, Bits = 00, Arg1 = MFE, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSTENV" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0020DD, Length = 1, Bits = 00, Arg1 = MFS, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FRSTOR" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0030DD, Length = 1, Bits = 00, Arg1 = MFS, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSAVE" },
new TCmdData() { Mask = 0x0038FF, Code = 0x0038DD, Length = 1, Bits = 00, Arg1 = MB2, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FSTSW" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x08AE0F, Length = 2, Bits = 00, Arg1 = MFX, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FXRSTOR" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x00AE0F, Length = 2, Bits = 00, Arg1 = MFX, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FXSAVE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E0DB, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FENI" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E1DB, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_FLT+0, Name = "FDISI" },
// MMX instructions. Length of MMX operand fields (in bytes) is added to the
// type, length of 0 means 8-byte MMX operand.
new TCmdData() { Mask = 0x00FFFF, Code = 0x00770F, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "EMMS" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006E0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR4, Arg3 = NNN, Type = C_MMX+0, Name = "MOVD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x007E0F, Length = 2, Bits = 00, Arg1 = MR4, Arg2 = RMX, Arg3 = NNN, Type = C_MMX+0, Name = "MOVD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+0, Name = "MOVQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x007F0F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = RMX, Arg3 = NNN, Type = C_MMX+0, Name = "MOVQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00630F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PACKSSWB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006B0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PACKSSDW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00670F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PACKUSWB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FC0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PADDB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FD0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PADDW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FE0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PADDD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F80F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PSUBB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F90F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PSUBW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00FA0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PSUBD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EC0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PADDSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00ED0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PADDSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E80F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PSUBSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E90F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PSUBSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00DC0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PADDUSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00DD0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PADDUSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D80F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PSUBUSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D90F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PSUBUSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00DB0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+0, Name = "PAND" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00DF0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+0, Name = "PANDN" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00740F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PCMPEQB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00750F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PCMPEQW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00760F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PCMPEQD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00640F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PCMPGTB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00650F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PCMPGTW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00660F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PCMPGTD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F50F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PMADDWD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E50F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PMULHW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D50F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PMULLW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EB0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+0, Name = "POR" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F10F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PSLLW" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x30710F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+2, Name = "PSLLW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F20F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PSLLD" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x30720F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+4, Name = "PSLLD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F30F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+0, Name = "PSLLQ" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x30730F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+0, Name = "PSLLQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E10F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PSRAW" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x20710F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+2, Name = "PSRAW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E20F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PSRAD" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x20720F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+4, Name = "PSRAD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D10F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PSRLW" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x10710F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+2, Name = "PSRLW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D20F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PSRLD" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x10720F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+4, Name = "PSRLD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D30F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+0, Name = "PSRLQ" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x10730F, Length = 2, Bits = 00, Arg1 = MR8, Arg2 = IM1, Arg3 = NNN, Type = C_MMX+0, Name = "PSRLQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00680F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PUNPCKHBW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00690F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PUNPCKHWD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006A0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PUNPCKHDQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00600F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PUNPCKLBW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00610F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PUNPCKLWD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00620F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+4, Name = "PUNPCKLDQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EF0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+0, Name = "PXOR" },
// AMD extentions to MMX command set (including Athlon/PIII extentions).
new TCmdData() { Mask = 0x00FFFF, Code = 0x000E0F, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "FEMMS" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x000D0F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "PREFETCH" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x080D0F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "PREFETCHW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F70F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = RR8, Arg3 = PDI, Type = C_MMX+1, Name = "MASKMOVQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E70F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = RMX, Arg3 = NNN, Type = C_MMX+0, Name = "MOVNTQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E00F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PAVGB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E30F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PAVGW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00C50F, Length = 2, Bits = 00, Arg1 = RR4, Arg2 = RMX, Arg3 = IM1, Type = C_MMX+2, Name = "PEXTRW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00C40F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR2, Arg3 = IM1, Type = C_MMX+2, Name = "PINSRW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EE0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PMAXSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00DE0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PMAXUB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00EA0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PMINSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00DA0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PMINUB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00D70F, Length = 2, Bits = 00, Arg1 = RG4, Arg2 = RR8, Arg3 = NNN, Type = C_MMX+1, Name = "PMOVMSKB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00E40F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+2, Name = "PMULHUW" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x00180F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "PREFETCHNTA" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x08180F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "PREFETCHT0" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x10180F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "PREFETCHT1" },
new TCmdData() { Mask = 0x38FFFF, Code = 0x18180F, Length = 2, Bits = 00, Arg1 = MD8, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "PREFETCHT2" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00F60F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_MMX+1, Name = "PSADBW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00700F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = IM1, Type = C_MMX+2, Name = "PSHUFW" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xF8AE0F, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_MMX+0, Name = "SFENCE" },
// AMD 3DNow! instructions (including Athlon extentions).
new TCmdData() { Mask = 0x00FFFF, Code = 0xBF0F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_NOW+1, Name = "PAVGUSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x9E0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFADD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x9A0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFSUB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xAA0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFSUBR" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xAE0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFACC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x900F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFCMPGE" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xA00F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFCMPGT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xB00F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFCMPEQ" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x940F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFMIN" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xA40F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFMAX" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x0D0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MR8, Arg3 = NNN, Type = C_NOW+4, Name = "PI2FD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x1D0F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PF2ID" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x960F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFRCP" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x970F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFRSQRT" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xB40F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFMUL" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xA60F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFRCPIT1" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xA70F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFRSQIT1" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xB60F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFRCPIT2" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xB70F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MR8, Arg3 = NNN, Type = C_NOW+2, Name = "PMULHRW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x1C0F0F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PF2IW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x8A0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFNACC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x8E0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PFPNACC" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x0C0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MR8, Arg3 = NNN, Type = C_NOW+4, Name = "PI2FW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0xBB0F0F, Length = 2, Bits = 00, Arg1 = R3D, Arg2 = MRD, Arg3 = NNN, Type = C_NOW+4, Name = "PSWAPD" },
// Some alternative mnemonics for Assembler, not used by Disassembler (so
// implicit pseudooperands are not marked).
new TCmdData() { Mask = 0x0000FF, Code = 0x0000A6, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "CMPSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A766, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "CMPSW" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000A7, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "CMPSD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000AC, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "LODSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AD66, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "LODSW" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000AD, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "LODSD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000A4, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "MOVSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A566, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "MOVSW" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000A5, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "MOVSD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000AE, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SCASB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AF66, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SCASW" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000AF, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "SCASD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000AA, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "STOSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AB66, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "STOSW" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000AB, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "STOSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A4F3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP MOVSB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xA5F366, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP MOVSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A5F3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP MOVSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00ACF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP LODSB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xADF366, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP LODSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00ADF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP LODSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AAF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP STOSB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xABF366, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP STOSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00ABF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP STOSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A6F3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPE CMPSB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xA7F366, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPE CMPSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A7F3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPE CMPSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AEF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPE SCASB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xAFF366, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPE SCASW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AFF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPE SCASD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A6F2, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPNE CMPSB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xA7F266, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPNE CMPSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00A7F2, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPNE CMPSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AEF2, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPNE SCASB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0xAFF266, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPNE SCASW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00AFF2, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REPNE SCASD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00006C, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "INSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006D66, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "INSW" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00006D, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "INSD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00006E, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "OUTSB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006F66, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "OUTSW" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00006F, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+C_RARE+0, Name = "OUTSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006CF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP INSB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0x6DF366, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP INSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006DF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP INSD" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006EF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP OUTSB" },
new TCmdData() { Mask = 0xFFFFFF, Code = 0x6FF366, Length = 2, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP OUTSW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x006FF3, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_REP+0, Name = "REP OUTSD" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E1, Length = 1, Bits = 00, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "$LOOP*Z" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000E0, Length = 1, Bits = 00, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "$LOOP*NZ" },
new TCmdData() { Mask = 0x0000FF, Code = 0x00009B, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "FWAIT" },
new TCmdData() { Mask = 0x0000FF, Code = 0x0000D7, Length = 1, Bits = 00, Arg1 = NNN, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+0, Name = "XLATB" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x00C40F, Length = 2, Bits = 00, Arg1 = RMX, Arg2 = RR4, Arg3 = IM1, Type = C_MMX+2, Name = "PINSRW" },
new TCmdData() { Mask = 0x00FFFF, Code = 0x0020CD, Length = 2, Bits = 00, Arg1 = VXD, Arg2 = NNN, Arg3 = NNN, Type = C_CAL+C_RARE+0, Name = "VxDCall" },
// Pseudocommands used by Assembler for masked search only.
new TCmdData() { Mask = 0x0000F0, Code = 0x000070, Length = 1, Bits = CC, Arg1 = JOB, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JCC" },
new TCmdData() { Mask = 0x00F0FF, Code = 0x00800F, Length = 2, Bits = CC, Arg1 = JOW, Arg2 = NNN, Arg3 = NNN, Type = C_JMC+0, Name = "JCC" },
new TCmdData() { Mask = 0x00F0FF, Code = 0x00900F, Length = 2, Bits = CC, Arg1 = MR1, Arg2 = NNN, Arg3 = NNN, Type = C_CMD+1, Name = "SETCC" },
new TCmdData() { Mask = 0x00F0FF, Code = 0x00400F, Length = 2, Bits = CC, Arg1 = REG, Arg2 = MRG, Arg3 = NNN, Type = C_CMD+0, Name = "CMOVCC" },
// End of command table.
};
public static TCmdData[] VxdCmd =
{
new TCmdData() { Mask = 0x00FFFF, Code = 0x0020CD, Length = 2, Bits = 00, Arg1 = VXD, Arg2 = NNN, Arg3 =NNN, Type = C_CAL+C_RARE+0, Name = "VxDCall" }
};
}
}