home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / nasm097s.zip / INSNSA.C < prev    next >
C/C++ Source or Header  |  1997-10-25  |  98KB  |  2,694 lines

  1. /* This file auto-generated from insns.dat by insns.pl - don't edit it */
  2.  
  3. #include <stdio.h>
  4. #include "nasm.h"
  5. #include "insns.h"
  6.  
  7. static struct itemplate instrux_AAA[] = {
  8.     {I_AAA, 0, {0,0,0}, "\1\x37", IF_8086},
  9.     {-1}
  10. };
  11.  
  12. static struct itemplate instrux_AAD[] = {
  13.     {I_AAD, 0, {0,0,0}, "\2\xD5\x0A", IF_8086},
  14.     {I_AAD, 1, {IMMEDIATE,0,0}, "\1\xD5\24", IF_8086},
  15.     {-1}
  16. };
  17.  
  18. static struct itemplate instrux_AAM[] = {
  19.     {I_AAM, 0, {0,0,0}, "\2\xD4\x0A", IF_8086},
  20.     {I_AAM, 1, {IMMEDIATE,0,0}, "\1\xD4\24", IF_8086},
  21.     {-1}
  22. };
  23.  
  24. static struct itemplate instrux_AAS[] = {
  25.     {I_AAS, 0, {0,0,0}, "\1\x3F", IF_8086},
  26.     {-1}
  27. };
  28.  
  29. static struct itemplate instrux_ADC[] = {
  30.     {I_ADC, 2, {MEMORY,REG8,0}, "\300\1\x10\101", IF_8086|IF_SM},
  31.     {I_ADC, 2, {REG8,REG8,0}, "\300\1\x10\101", IF_8086},
  32.     {I_ADC, 2, {MEMORY,REG16,0}, "\320\300\1\x11\101", IF_8086|IF_SM},
  33.     {I_ADC, 2, {REG16,REG16,0}, "\320\300\1\x11\101", IF_8086},
  34.     {I_ADC, 2, {MEMORY,REG32,0}, "\321\300\1\x11\101", IF_386|IF_SM},
  35.     {I_ADC, 2, {REG32,REG32,0}, "\321\300\1\x11\101", IF_386},
  36.     {I_ADC, 2, {REG8,MEMORY,0}, "\301\1\x12\110", IF_8086|IF_SM},
  37.     {I_ADC, 2, {REG8,REG8,0}, "\301\1\x12\110", IF_8086},
  38.     {I_ADC, 2, {REG16,MEMORY,0}, "\320\301\1\x13\110", IF_8086|IF_SM},
  39.     {I_ADC, 2, {REG16,REG16,0}, "\320\301\1\x13\110", IF_8086},
  40.     {I_ADC, 2, {REG32,MEMORY,0}, "\321\301\1\x13\110", IF_386|IF_SM},
  41.     {I_ADC, 2, {REG32,REG32,0}, "\321\301\1\x13\110", IF_386},
  42.     {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\202\15", IF_8086},
  43.     {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\202\15", IF_386},
  44.     {I_ADC, 2, {REG_AL,IMMEDIATE,0}, "\1\x14\21", IF_8086|IF_SM},
  45.     {I_ADC, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x15\31", IF_8086|IF_SM},
  46.     {I_ADC, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x15\41", IF_386|IF_SM},
  47.     {I_ADC, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\202\21", IF_8086|IF_SM},
  48.     {I_ADC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\202\31", IF_8086|IF_SM},
  49.     {I_ADC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\202\41", IF_386|IF_SM},
  50.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\202\21", IF_8086|IF_SM},
  51.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\202\31", IF_8086|IF_SM},
  52.     {I_ADC, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\202\41", IF_386|IF_SM},
  53.     {-1}
  54. };
  55.  
  56. static struct itemplate instrux_ADD[] = {
  57.     {I_ADD, 2, {MEMORY,REG8,0}, "\300\17\101", IF_8086|IF_SM},
  58.     {I_ADD, 2, {REG8,REG8,0}, "\300\17\101", IF_8086},
  59.     {I_ADD, 2, {MEMORY,REG16,0}, "\320\300\1\x01\101", IF_8086|IF_SM},
  60.     {I_ADD, 2, {REG16,REG16,0}, "\320\300\1\x01\101", IF_8086},
  61.     {I_ADD, 2, {MEMORY,REG32,0}, "\321\300\1\x01\101", IF_386|IF_SM},
  62.     {I_ADD, 2, {REG32,REG32,0}, "\321\300\1\x01\101", IF_386},
  63.     {I_ADD, 2, {REG8,MEMORY,0}, "\301\1\x02\110", IF_8086|IF_SM},
  64.     {I_ADD, 2, {REG8,REG8,0}, "\301\1\x02\110", IF_8086},
  65.     {I_ADD, 2, {REG16,MEMORY,0}, "\320\301\1\x03\110", IF_8086|IF_SM},
  66.     {I_ADD, 2, {REG16,REG16,0}, "\320\301\1\x03\110", IF_8086},
  67.     {I_ADD, 2, {REG32,MEMORY,0}, "\321\301\1\x03\110", IF_386|IF_SM},
  68.     {I_ADD, 2, {REG32,REG32,0}, "\321\301\1\x03\110", IF_386},
  69.     {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\200\15", IF_8086},
  70.     {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\200\15", IF_386},
  71.     {I_ADD, 2, {REG_AL,IMMEDIATE,0}, "\1\x04\21", IF_8086|IF_SM},
  72.     {I_ADD, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x05\31", IF_8086|IF_SM},
  73.     {I_ADD, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x05\41", IF_386|IF_SM},
  74.     {I_ADD, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\200\21", IF_8086|IF_SM},
  75.     {I_ADD, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\200\31", IF_8086|IF_SM},
  76.     {I_ADD, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\200\41", IF_386|IF_SM},
  77.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\200\21", IF_8086|IF_SM},
  78.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\200\31", IF_8086|IF_SM},
  79.     {I_ADD, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\200\41", IF_386|IF_SM},
  80.     {-1}
  81. };
  82.  
  83. static struct itemplate instrux_AND[] = {
  84.     {I_AND, 2, {MEMORY,REG8,0}, "\300\1\x20\101", IF_8086|IF_SM},
  85.     {I_AND, 2, {REG8,REG8,0}, "\300\1\x20\101", IF_8086},
  86.     {I_AND, 2, {MEMORY,REG16,0}, "\320\300\1\x21\101", IF_8086|IF_SM},
  87.     {I_AND, 2, {REG16,REG16,0}, "\320\300\1\x21\101", IF_8086},
  88.     {I_AND, 2, {MEMORY,REG32,0}, "\321\300\1\x21\101", IF_386|IF_SM},
  89.     {I_AND, 2, {REG32,REG32,0}, "\321\300\1\x21\101", IF_386},
  90.     {I_AND, 2, {REG8,MEMORY,0}, "\301\1\x22\110", IF_8086|IF_SM},
  91.     {I_AND, 2, {REG8,REG8,0}, "\301\1\x22\110", IF_8086},
  92.     {I_AND, 2, {REG16,MEMORY,0}, "\320\301\1\x23\110", IF_8086|IF_SM},
  93.     {I_AND, 2, {REG16,REG16,0}, "\320\301\1\x23\110", IF_8086},
  94.     {I_AND, 2, {REG32,MEMORY,0}, "\321\301\1\x23\110", IF_386|IF_SM},
  95.     {I_AND, 2, {REG32,REG32,0}, "\321\301\1\x23\110", IF_386},
  96.     {I_AND, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\204\15", IF_8086},
  97.     {I_AND, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\204\15", IF_386},
  98.     {I_AND, 2, {REG_AL,IMMEDIATE,0}, "\1\x24\21", IF_8086|IF_SM},
  99.     {I_AND, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x25\31", IF_8086|IF_SM},
  100.     {I_AND, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x25\41", IF_386|IF_SM},
  101.     {I_AND, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\204\21", IF_8086|IF_SM},
  102.     {I_AND, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\204\31", IF_8086|IF_SM},
  103.     {I_AND, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\204\41", IF_386|IF_SM},
  104.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\204\21", IF_8086|IF_SM},
  105.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\204\31", IF_8086|IF_SM},
  106.     {I_AND, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\204\41", IF_386|IF_SM},
  107.     {-1}
  108. };
  109.  
  110. static struct itemplate instrux_ARPL[] = {
  111.     {I_ARPL, 2, {MEMORY,REG16,0}, "\300\1\x63\101", IF_286|IF_PRIV|IF_SM},
  112.     {I_ARPL, 2, {REG16,REG16,0}, "\300\1\x63\101", IF_286|IF_PRIV},
  113.     {-1}
  114. };
  115.  
  116. static struct itemplate instrux_BOUND[] = {
  117.     {I_BOUND, 2, {REG16,MEMORY,0}, "\320\301\1\x62\110", IF_186},
  118.     {I_BOUND, 2, {REG32,MEMORY,0}, "\321\301\1\x62\110", IF_386},
  119.     {-1}
  120. };
  121.  
  122. static struct itemplate instrux_BSF[] = {
  123.     {I_BSF, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBC\110", IF_386|IF_SM},
  124.     {I_BSF, 2, {REG16,REG16,0}, "\320\301\2\x0F\xBC\110", IF_386},
  125.     {I_BSF, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xBC\110", IF_386|IF_SM},
  126.     {I_BSF, 2, {REG32,REG32,0}, "\321\301\2\x0F\xBC\110", IF_386},
  127.     {-1}
  128. };
  129.  
  130. static struct itemplate instrux_BSR[] = {
  131.     {I_BSR, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBD\110", IF_386|IF_SM},
  132.     {I_BSR, 2, {REG16,REG16,0}, "\320\301\2\x0F\xBD\110", IF_386},
  133.     {I_BSR, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xBD\110", IF_386|IF_SM},
  134.     {I_BSR, 2, {REG32,REG32,0}, "\321\301\2\x0F\xBD\110", IF_386},
  135.     {-1}
  136. };
  137.  
  138. static struct itemplate instrux_BSWAP[] = {
  139.     {I_BSWAP, 1, {REG32,0,0}, "\321\1\x0F\10\xC8", IF_486},
  140.     {-1}
  141. };
  142.  
  143. static struct itemplate instrux_BT[] = {
  144.     {I_BT, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA3\101", IF_386|IF_SM},
  145.     {I_BT, 2, {REG16,REG16,0}, "\320\300\2\x0F\xA3\101", IF_386},
  146.     {I_BT, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA3\101", IF_386|IF_SM},
  147.     {I_BT, 2, {REG32,REG32,0}, "\321\300\2\x0F\xA3\101", IF_386},
  148.     {I_BT, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\204\25", IF_386},
  149.     {I_BT, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\204\25", IF_386},
  150.     {-1}
  151. };
  152.  
  153. static struct itemplate instrux_BTC[] = {
  154.     {I_BTC, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xBB\101", IF_386|IF_SM},
  155.     {I_BTC, 2, {REG16,REG16,0}, "\320\300\2\x0F\xBB\101", IF_386},
  156.     {I_BTC, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xBB\101", IF_386|IF_SM},
  157.     {I_BTC, 2, {REG32,REG32,0}, "\321\300\2\x0F\xBB\101", IF_386},
  158.     {I_BTC, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\207\25", IF_386},
  159.     {I_BTC, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\207\25", IF_386},
  160.     {-1}
  161. };
  162.  
  163. static struct itemplate instrux_BTR[] = {
  164.     {I_BTR, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xB3\101", IF_386|IF_SM},
  165.     {I_BTR, 2, {REG16,REG16,0}, "\320\300\2\x0F\xB3\101", IF_386},
  166.     {I_BTR, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xB3\101", IF_386|IF_SM},
  167.     {I_BTR, 2, {REG32,REG32,0}, "\321\300\2\x0F\xB3\101", IF_386},
  168.     {I_BTR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\206\25", IF_386},
  169.     {I_BTR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\206\25", IF_386},
  170.     {-1}
  171. };
  172.  
  173. static struct itemplate instrux_BTS[] = {
  174.     {I_BTS, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xAB\101", IF_386|IF_SM},
  175.     {I_BTS, 2, {REG16,REG16,0}, "\320\300\2\x0F\xAB\101", IF_386},
  176.     {I_BTS, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xAB\101", IF_386|IF_SM},
  177.     {I_BTS, 2, {REG32,REG32,0}, "\321\300\2\x0F\xAB\101", IF_386},
  178.     {I_BTS, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\2\x0F\xBA\205\25", IF_386},
  179.     {I_BTS, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\2\x0F\xBA\205\25", IF_386},
  180.     {-1}
  181. };
  182.  
  183. static struct itemplate instrux_CALL[] = {
  184.     {I_CALL, 1, {IMMEDIATE,0,0}, "\322\1\xE8\64", IF_8086},
  185.     {I_CALL, 1, {IMMEDIATE|FAR,0,0}, "\322\1\x9A\34\37", IF_8086},
  186.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\322\1\x9A\35\30", IF_8086},
  187.     {I_CALL, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "\320\1\x9A\31\30", IF_8086},
  188.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "\320\1\x9A\31\30", IF_8086},
  189.     {I_CALL, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "\321\1\x9A\41\30", IF_386},
  190.     {I_CALL, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "\321\1\x9A\41\30", IF_386},
  191.     {I_CALL, 1, {MEMORY|FAR,0,0}, "\322\300\1\xFF\203", IF_8086},
  192.     {I_CALL, 1, {MEMORY|BITS16|FAR,0,0}, "\320\300\1\xFF\203", IF_8086},
  193.     {I_CALL, 1, {MEMORY|BITS32|FAR,0,0}, "\321\300\1\xFF\203", IF_386},
  194.     {I_CALL, 1, {MEMORY|NEAR,0,0}, "\322\300\1\xFF\202", IF_8086},
  195.     {I_CALL, 1, {MEMORY|BITS16|NEAR,0,0}, "\320\300\1\xFF\202", IF_8086},
  196.     {I_CALL, 1, {MEMORY|BITS32|NEAR,0,0}, "\321\300\1\xFF\202", IF_386},
  197.     {I_CALL, 1, {REG16,0,0}, "\320\300\1\xFF\202", IF_8086},
  198.     {I_CALL, 1, {REG32,0,0}, "\321\300\1\xFF\202", IF_386},
  199.     {I_CALL, 1, {MEMORY,0,0}, "\322\300\1\xFF\202", IF_8086},
  200.     {I_CALL, 1, {MEMORY|BITS16,0,0}, "\320\300\1\xFF\202", IF_8086},
  201.     {I_CALL, 1, {MEMORY|BITS32,0,0}, "\321\300\1\xFF\202", IF_386},
  202.     {-1}
  203. };
  204.  
  205. static struct itemplate instrux_CBW[] = {
  206.     {I_CBW, 0, {0,0,0}, "\320\1\x98", IF_8086},
  207.     {-1}
  208. };
  209.  
  210. static struct itemplate instrux_CDQ[] = {
  211.     {I_CDQ, 0, {0,0,0}, "\321\1\x99", IF_386},
  212.     {-1}
  213. };
  214.  
  215. static struct itemplate instrux_CLC[] = {
  216.     {I_CLC, 0, {0,0,0}, "\1\xF8", IF_8086},
  217.     {-1}
  218. };
  219.  
  220. static struct itemplate instrux_CLD[] = {
  221.     {I_CLD, 0, {0,0,0}, "\1\xFC", IF_8086},
  222.     {-1}
  223. };
  224.  
  225. static struct itemplate instrux_CLI[] = {
  226.     {I_CLI, 0, {0,0,0}, "\1\xFA", IF_8086},
  227.     {-1}
  228. };
  229.  
  230. static struct itemplate instrux_CLTS[] = {
  231.     {I_CLTS, 0, {0,0,0}, "\2\x0F\x06", IF_286|IF_PRIV},
  232.     {-1}
  233. };
  234.  
  235. static struct itemplate instrux_CMC[] = {
  236.     {I_CMC, 0, {0,0,0}, "\1\xF5", IF_8086},
  237.     {-1}
  238. };
  239.  
  240. static struct itemplate instrux_CMP[] = {
  241.     {I_CMP, 2, {MEMORY,REG8,0}, "\300\1\x38\101", IF_8086|IF_SM},
  242.     {I_CMP, 2, {REG8,REG8,0}, "\300\1\x38\101", IF_8086},
  243.     {I_CMP, 2, {MEMORY,REG16,0}, "\320\300\1\x39\101", IF_8086|IF_SM},
  244.     {I_CMP, 2, {REG16,REG16,0}, "\320\300\1\x39\101", IF_8086},
  245.     {I_CMP, 2, {MEMORY,REG32,0}, "\321\300\1\x39\101", IF_386|IF_SM},
  246.     {I_CMP, 2, {REG32,REG32,0}, "\321\300\1\x39\101", IF_386},
  247.     {I_CMP, 2, {REG8,MEMORY,0}, "\301\1\x3A\110", IF_8086|IF_SM},
  248.     {I_CMP, 2, {REG8,REG8,0}, "\301\1\x3A\110", IF_8086},
  249.     {I_CMP, 2, {REG16,MEMORY,0}, "\320\301\1\x3B\110", IF_8086|IF_SM},
  250.     {I_CMP, 2, {REG16,REG16,0}, "\320\301\1\x3B\110", IF_8086},
  251.     {I_CMP, 2, {REG32,MEMORY,0}, "\321\301\1\x3B\110", IF_386|IF_SM},
  252.     {I_CMP, 2, {REG32,REG32,0}, "\321\301\1\x3B\110", IF_386},
  253.     {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\207\15", IF_8086},
  254.     {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\207\15", IF_386},
  255.     {I_CMP, 2, {REG_AL,IMMEDIATE,0}, "\1\x3C\21", IF_8086|IF_SM},
  256.     {I_CMP, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x3D\31", IF_8086|IF_SM},
  257.     {I_CMP, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x3D\41", IF_386|IF_SM},
  258.     {I_CMP, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\207\21", IF_8086|IF_SM},
  259.     {I_CMP, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\207\31", IF_8086|IF_SM},
  260.     {I_CMP, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\207\41", IF_386|IF_SM},
  261.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\207\21", IF_8086|IF_SM},
  262.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\207\31", IF_8086|IF_SM},
  263.     {I_CMP, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\207\41", IF_386|IF_SM},
  264.     {-1}
  265. };
  266.  
  267. static struct itemplate instrux_CMPSB[] = {
  268.     {I_CMPSB, 0, {0,0,0}, "\1\xA6", IF_8086},
  269.     {-1}
  270. };
  271.  
  272. static struct itemplate instrux_CMPSD[] = {
  273.     {I_CMPSD, 0, {0,0,0}, "\321\1\xA7", IF_386},
  274.     {-1}
  275. };
  276.  
  277. static struct itemplate instrux_CMPSW[] = {
  278.     {I_CMPSW, 0, {0,0,0}, "\320\1\xA7", IF_8086},
  279.     {-1}
  280. };
  281.  
  282. static struct itemplate instrux_CMPXCHG[] = {
  283.     {I_CMPXCHG, 2, {MEMORY,REG8,0}, "\300\2\x0F\xB0\101", IF_PENT|IF_SM},
  284.     {I_CMPXCHG, 2, {REG8,REG8,0}, "\300\2\x0F\xB0\101", IF_PENT},
  285.     {I_CMPXCHG, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xB1\101", IF_PENT|IF_SM},
  286.     {I_CMPXCHG, 2, {REG16,REG16,0}, "\320\300\2\x0F\xB1\101", IF_PENT},
  287.     {I_CMPXCHG, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xB1\101", IF_PENT|IF_SM},
  288.     {I_CMPXCHG, 2, {REG32,REG32,0}, "\321\300\2\x0F\xB1\101", IF_PENT},
  289.     {-1}
  290. };
  291.  
  292. static struct itemplate instrux_CMPXCHG486[] = {
  293.     {I_CMPXCHG486, 2, {MEMORY,REG8,0}, "\300\2\x0F\xA6\101", IF_486|IF_SM|IF_UNDOC},
  294.     {I_CMPXCHG486, 2, {REG8,REG8,0}, "\300\2\x0F\xA6\101", IF_486|IF_UNDOC},
  295.     {I_CMPXCHG486, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA7\101", IF_486|IF_SM|IF_UNDOC},
  296.     {I_CMPXCHG486, 2, {REG16,REG16,0}, "\320\300\2\x0F\xA7\101", IF_486|IF_UNDOC},
  297.     {I_CMPXCHG486, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA7\101", IF_486|IF_SM|IF_UNDOC},
  298.     {I_CMPXCHG486, 2, {REG32,REG32,0}, "\321\300\2\x0F\xA7\101", IF_486|IF_UNDOC},
  299.     {-1}
  300. };
  301.  
  302. static struct itemplate instrux_CMPXCHG8B[] = {
  303.     {I_CMPXCHG8B, 1, {MEMORY,0,0}, "\300\2\x0F\xC7\201", IF_PENT},
  304.     {-1}
  305. };
  306.  
  307. static struct itemplate instrux_CPUID[] = {
  308.     {I_CPUID, 0, {0,0,0}, "\2\x0F\xA2", IF_PENT},
  309.     {-1}
  310. };
  311.  
  312. static struct itemplate instrux_CWD[] = {
  313.     {I_CWD, 0, {0,0,0}, "\320\1\x99", IF_8086},
  314.     {-1}
  315. };
  316.  
  317. static struct itemplate instrux_CWDE[] = {
  318.     {I_CWDE, 0, {0,0,0}, "\321\1\x98", IF_386},
  319.     {-1}
  320. };
  321.  
  322. static struct itemplate instrux_DAA[] = {
  323.     {I_DAA, 0, {0,0,0}, "\1\x27", IF_8086},
  324.     {-1}
  325. };
  326.  
  327. static struct itemplate instrux_DAS[] = {
  328.     {I_DAS, 0, {0,0,0}, "\1\x2F", IF_8086},
  329.     {-1}
  330. };
  331.  
  332. static struct itemplate instrux_DB[] = {
  333.     {-1}
  334. };
  335.  
  336. static struct itemplate instrux_DD[] = {
  337.     {-1}
  338. };
  339.  
  340. static struct itemplate instrux_DEC[] = {
  341.     {I_DEC, 1, {REG16,0,0}, "\320\10\x48", IF_8086},
  342.     {I_DEC, 1, {REG32,0,0}, "\321\10\x48", IF_386},
  343.     {I_DEC, 1, {REGMEM|BITS8,0,0}, "\300\1\xFE\201", IF_8086},
  344.     {I_DEC, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\201", IF_8086},
  345.     {I_DEC, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\201", IF_386},
  346.     {-1}
  347. };
  348.  
  349. static struct itemplate instrux_DIV[] = {
  350.     {I_DIV, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\206", IF_8086},
  351.     {I_DIV, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\206", IF_8086},
  352.     {I_DIV, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\206", IF_386},
  353.     {-1}
  354. };
  355.  
  356. static struct itemplate instrux_DQ[] = {
  357.     {-1}
  358. };
  359.  
  360. static struct itemplate instrux_DT[] = {
  361.     {-1}
  362. };
  363.  
  364. static struct itemplate instrux_DW[] = {
  365.     {-1}
  366. };
  367.  
  368. static struct itemplate instrux_EMMS[] = {
  369.     {I_EMMS, 0, {0,0,0}, "\2\x0F\x77", IF_PENT|IF_MMX},
  370.     {-1}
  371. };
  372.  
  373. static struct itemplate instrux_ENTER[] = {
  374.     {I_ENTER, 2, {IMMEDIATE,IMMEDIATE,0}, "\1\xC8\30\25", IF_186},
  375.     {-1}
  376. };
  377.  
  378. static struct itemplate instrux_EQU[] = {
  379.     {I_EQU, 1, {IMMEDIATE,0,0}, "\0", IF_8086},
  380.     {I_EQU, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\0", IF_8086},
  381.     {-1}
  382. };
  383.  
  384. static struct itemplate instrux_F2XM1[] = {
  385.     {I_F2XM1, 0, {0,0,0}, "\2\xD9\xF0", IF_8086|IF_FPU},
  386.     {-1}
  387. };
  388.  
  389. static struct itemplate instrux_FABS[] = {
  390.     {I_FABS, 0, {0,0,0}, "\2\xD9\xE1", IF_8086|IF_FPU},
  391.     {-1}
  392. };
  393.  
  394. static struct itemplate instrux_FADD[] = {
  395.     {I_FADD, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\200", IF_8086|IF_FPU},
  396.     {I_FADD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\200", IF_8086|IF_FPU},
  397.     {I_FADD, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xC0", IF_8086|IF_FPU},
  398.     {I_FADD, 1, {FPUREG,0,0}, "\1\xD8\10\xC0", IF_8086|IF_FPU},
  399.     {I_FADD, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xC0", IF_8086|IF_FPU},
  400.     {I_FADD, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xC0", IF_8086|IF_FPU},
  401.     {-1}
  402. };
  403.  
  404. static struct itemplate instrux_FADDP[] = {
  405.     {I_FADDP, 1, {FPUREG,0,0}, "\1\xDE\10\xC0", IF_8086|IF_FPU},
  406.     {I_FADDP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xC0", IF_8086|IF_FPU},
  407.     {-1}
  408. };
  409.  
  410. static struct itemplate instrux_FBLD[] = {
  411.     {I_FBLD, 1, {MEMORY|BITS80,0,0}, "\300\1\xDF\204", IF_8086|IF_FPU},
  412.     {I_FBLD, 1, {MEMORY,0,0}, "\300\1\xDF\204", IF_8086|IF_FPU},
  413.     {-1}
  414. };
  415.  
  416. static struct itemplate instrux_FBSTP[] = {
  417.     {I_FBSTP, 1, {MEMORY|BITS80,0,0}, "\300\1\xDF\206", IF_8086|IF_FPU},
  418.     {I_FBSTP, 1, {MEMORY,0,0}, "\300\1\xDF\206", IF_8086|IF_FPU},
  419.     {-1}
  420. };
  421.  
  422. static struct itemplate instrux_FCHS[] = {
  423.     {I_FCHS, 0, {0,0,0}, "\2\xD9\xE0", IF_8086|IF_FPU},
  424.     {-1}
  425. };
  426.  
  427. static struct itemplate instrux_FCLEX[] = {
  428.     {I_FCLEX, 0, {0,0,0}, "\3\x9B\xDB\xE2", IF_8086|IF_FPU},
  429.     {-1}
  430. };
  431.  
  432. static struct itemplate instrux_FCMOVB[] = {
  433.     {I_FCMOVB, 1, {FPUREG,0,0}, "\1\xDA\10\xC0", IF_P6|IF_FPU},
  434.     {I_FCMOVB, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xC0", IF_P6|IF_FPU},
  435.     {-1}
  436. };
  437.  
  438. static struct itemplate instrux_FCMOVBE[] = {
  439.     {I_FCMOVBE, 1, {FPUREG,0,0}, "\1\xDA\10\xD0", IF_P6|IF_FPU},
  440.     {I_FCMOVBE, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xD0", IF_P6|IF_FPU},
  441.     {-1}
  442. };
  443.  
  444. static struct itemplate instrux_FCMOVE[] = {
  445.     {I_FCMOVE, 1, {FPUREG,0,0}, "\1\xDA\10\xC8", IF_P6|IF_FPU},
  446.     {I_FCMOVE, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xC8", IF_P6|IF_FPU},
  447.     {-1}
  448. };
  449.  
  450. static struct itemplate instrux_FCMOVNB[] = {
  451.     {I_FCMOVNB, 1, {FPUREG,0,0}, "\1\xDB\10\xC0", IF_P6|IF_FPU},
  452.     {I_FCMOVNB, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xC0", IF_P6|IF_FPU},
  453.     {-1}
  454. };
  455.  
  456. static struct itemplate instrux_FCMOVNBE[] = {
  457.     {I_FCMOVNBE, 1, {FPUREG,0,0}, "\1\xDB\10\xD0", IF_P6|IF_FPU},
  458.     {I_FCMOVNBE, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xD0", IF_P6|IF_FPU},
  459.     {-1}
  460. };
  461.  
  462. static struct itemplate instrux_FCMOVNE[] = {
  463.     {I_FCMOVNE, 1, {FPUREG,0,0}, "\1\xDB\10\xC8", IF_P6|IF_FPU},
  464.     {I_FCMOVNE, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xC8", IF_P6|IF_FPU},
  465.     {-1}
  466. };
  467.  
  468. static struct itemplate instrux_FCMOVNU[] = {
  469.     {I_FCMOVNU, 1, {FPUREG,0,0}, "\1\xDB\10\xD8", IF_P6|IF_FPU},
  470.     {I_FCMOVNU, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xD8", IF_P6|IF_FPU},
  471.     {-1}
  472. };
  473.  
  474. static struct itemplate instrux_FCMOVU[] = {
  475.     {I_FCMOVU, 1, {FPUREG,0,0}, "\1\xDA\10\xD8", IF_P6|IF_FPU},
  476.     {I_FCMOVU, 2, {FPU0,FPUREG,0}, "\1\xDA\11\xD8", IF_P6|IF_FPU},
  477.     {-1}
  478. };
  479.  
  480. static struct itemplate instrux_FCOM[] = {
  481.     {I_FCOM, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\202", IF_8086|IF_FPU},
  482.     {I_FCOM, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\202", IF_8086|IF_FPU},
  483.     {I_FCOM, 1, {FPUREG,0,0}, "\1\xD8\10\xD0", IF_8086|IF_FPU},
  484.     {I_FCOM, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xD0", IF_8086|IF_FPU},
  485.     {-1}
  486. };
  487.  
  488. static struct itemplate instrux_FCOMI[] = {
  489.     {I_FCOMI, 1, {FPUREG,0,0}, "\1\xDB\10\xF0", IF_P6|IF_FPU},
  490.     {I_FCOMI, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xF0", IF_P6|IF_FPU},
  491.     {-1}
  492. };
  493.  
  494. static struct itemplate instrux_FCOMIP[] = {
  495.     {I_FCOMIP, 1, {FPUREG,0,0}, "\1\xDF\10\xF0", IF_P6|IF_FPU},
  496.     {I_FCOMIP, 2, {FPU0,FPUREG,0}, "\1\xDF\11\xF0", IF_P6|IF_FPU},
  497.     {-1}
  498. };
  499.  
  500. static struct itemplate instrux_FCOMP[] = {
  501.     {I_FCOMP, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\203", IF_8086|IF_FPU},
  502.     {I_FCOMP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\203", IF_8086|IF_FPU},
  503.     {I_FCOMP, 1, {FPUREG,0,0}, "\1\xD8\10\xD8", IF_8086|IF_FPU},
  504.     {I_FCOMP, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xD8", IF_8086|IF_FPU},
  505.     {-1}
  506. };
  507.  
  508. static struct itemplate instrux_FCOMPP[] = {
  509.     {I_FCOMPP, 0, {0,0,0}, "\2\xDE\xD9", IF_8086|IF_FPU},
  510.     {-1}
  511. };
  512.  
  513. static struct itemplate instrux_FCOS[] = {
  514.     {I_FCOS, 0, {0,0,0}, "\2\xD9\xFF", IF_386|IF_FPU},
  515.     {-1}
  516. };
  517.  
  518. static struct itemplate instrux_FDECSTP[] = {
  519.     {I_FDECSTP, 0, {0,0,0}, "\2\xD9\xF6", IF_8086|IF_FPU},
  520.     {-1}
  521. };
  522.  
  523. static struct itemplate instrux_FDISI[] = {
  524.     {I_FDISI, 0, {0,0,0}, "\3\x9B\xDB\xE1", IF_8086|IF_FPU},
  525.     {-1}
  526. };
  527.  
  528. static struct itemplate instrux_FDIV[] = {
  529.     {I_FDIV, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\206", IF_8086|IF_FPU},
  530.     {I_FDIV, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\206", IF_8086|IF_FPU},
  531.     {I_FDIV, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xF8", IF_8086|IF_FPU},
  532.     {I_FDIV, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xF8", IF_8086|IF_FPU},
  533.     {I_FDIV, 1, {FPUREG,0,0}, "\1\xD8\10\xF0", IF_8086|IF_FPU},
  534.     {I_FDIV, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xF0", IF_8086|IF_FPU},
  535.     {-1}
  536. };
  537.  
  538. static struct itemplate instrux_FDIVP[] = {
  539.     {I_FDIVP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xF8", IF_8086|IF_FPU},
  540.     {I_FDIVP, 1, {FPUREG,0,0}, "\1\xDE\10\xF8", IF_8086|IF_FPU},
  541.     {-1}
  542. };
  543.  
  544. static struct itemplate instrux_FDIVR[] = {
  545.     {I_FDIVR, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\207", IF_8086|IF_FPU},
  546.     {I_FDIVR, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\207", IF_8086|IF_FPU},
  547.     {I_FDIVR, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xF0", IF_8086|IF_FPU},
  548.     {I_FDIVR, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xF0", IF_8086|IF_FPU},
  549.     {I_FDIVR, 1, {FPUREG,0,0}, "\1\xD8\10\xF8", IF_8086|IF_FPU},
  550.     {I_FDIVR, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xF8", IF_8086|IF_FPU},
  551.     {-1}
  552. };
  553.  
  554. static struct itemplate instrux_FDIVRP[] = {
  555.     {I_FDIVRP, 1, {FPUREG,0,0}, "\1\xDE\10\xF0", IF_8086|IF_FPU},
  556.     {I_FDIVRP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xF0", IF_8086|IF_FPU},
  557.     {-1}
  558. };
  559.  
  560. static struct itemplate instrux_FENI[] = {
  561.     {I_FENI, 0, {0,0,0}, "\3\x9B\xDB\xE0", IF_8086|IF_FPU},
  562.     {-1}
  563. };
  564.  
  565. static struct itemplate instrux_FFREE[] = {
  566.     {I_FFREE, 1, {FPUREG,0,0}, "\1\xDD\10\xC0", IF_8086|IF_FPU},
  567.     {-1}
  568. };
  569.  
  570. static struct itemplate instrux_FIADD[] = {
  571.     {I_FIADD, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\200", IF_8086|IF_FPU},
  572.     {I_FIADD, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\200", IF_8086|IF_FPU},
  573.     {-1}
  574. };
  575.  
  576. static struct itemplate instrux_FICOM[] = {
  577.     {I_FICOM, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\202", IF_8086|IF_FPU},
  578.     {I_FICOM, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\202", IF_8086|IF_FPU},
  579.     {-1}
  580. };
  581.  
  582. static struct itemplate instrux_FICOMP[] = {
  583.     {I_FICOMP, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\203", IF_8086|IF_FPU},
  584.     {I_FICOMP, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\203", IF_8086|IF_FPU},
  585.     {-1}
  586. };
  587.  
  588. static struct itemplate instrux_FIDIV[] = {
  589.     {I_FIDIV, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\206", IF_8086|IF_FPU},
  590.     {I_FIDIV, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\206", IF_8086|IF_FPU},
  591.     {-1}
  592. };
  593.  
  594. static struct itemplate instrux_FIDIVR[] = {
  595.     {I_FIDIVR, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\207", IF_8086|IF_FPU},
  596.     {I_FIDIVR, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\207", IF_8086|IF_FPU},
  597.     {-1}
  598. };
  599.  
  600. static struct itemplate instrux_FILD[] = {
  601.     {I_FILD, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\200", IF_8086|IF_FPU},
  602.     {I_FILD, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\200", IF_8086|IF_FPU},
  603.     {I_FILD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDF\205", IF_8086|IF_FPU},
  604.     {-1}
  605. };
  606.  
  607. static struct itemplate instrux_FIMUL[] = {
  608.     {I_FIMUL, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\201", IF_8086|IF_FPU},
  609.     {I_FIMUL, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\201", IF_8086|IF_FPU},
  610.     {-1}
  611. };
  612.  
  613. static struct itemplate instrux_FINCSTP[] = {
  614.     {I_FINCSTP, 0, {0,0,0}, "\2\xD9\xF7", IF_8086|IF_FPU},
  615.     {-1}
  616. };
  617.  
  618. static struct itemplate instrux_FINIT[] = {
  619.     {I_FINIT, 0, {0,0,0}, "\3\x9B\xDB\xE3", IF_8086|IF_FPU},
  620.     {-1}
  621. };
  622.  
  623. static struct itemplate instrux_FIST[] = {
  624.     {I_FIST, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\202", IF_8086|IF_FPU},
  625.     {I_FIST, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\202", IF_8086|IF_FPU},
  626.     {-1}
  627. };
  628.  
  629. static struct itemplate instrux_FISTP[] = {
  630.     {I_FISTP, 1, {MEMORY|BITS32,0,0}, "\300\1\xDB\203", IF_8086|IF_FPU},
  631.     {I_FISTP, 1, {MEMORY|BITS16,0,0}, "\300\1\xDF\203", IF_8086|IF_FPU},
  632.     {I_FISTP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDF\207", IF_8086|IF_FPU},
  633.     {-1}
  634. };
  635.  
  636. static struct itemplate instrux_FISUB[] = {
  637.     {I_FISUB, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\204", IF_8086|IF_FPU},
  638.     {I_FISUB, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\204", IF_8086|IF_FPU},
  639.     {-1}
  640. };
  641.  
  642. static struct itemplate instrux_FISUBR[] = {
  643.     {I_FISUBR, 1, {MEMORY|BITS32,0,0}, "\300\1\xDA\205", IF_8086|IF_FPU},
  644.     {I_FISUBR, 1, {MEMORY|BITS16,0,0}, "\300\1\xDE\205", IF_8086|IF_FPU},
  645.     {-1}
  646. };
  647.  
  648. static struct itemplate instrux_FLD[] = {
  649.     {I_FLD, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\200", IF_8086|IF_FPU},
  650.     {I_FLD, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\200", IF_8086|IF_FPU},
  651.     {I_FLD, 1, {MEMORY|BITS80,0,0}, "\300\1\xDB\205", IF_8086|IF_FPU},
  652.     {I_FLD, 1, {FPUREG,0,0}, "\1\xD9\10\xC0", IF_8086|IF_FPU},
  653.     {-1}
  654. };
  655.  
  656. static struct itemplate instrux_FLD1[] = {
  657.     {I_FLD1, 0, {0,0,0}, "\2\xD9\xE8", IF_8086|IF_FPU},
  658.     {-1}
  659. };
  660.  
  661. static struct itemplate instrux_FLDCW[] = {
  662.     {I_FLDCW, 1, {MEMORY,0,0}, "\300\1\xD9\205", IF_8086|IF_FPU|IF_SW},
  663.     {-1}
  664. };
  665.  
  666. static struct itemplate instrux_FLDENV[] = {
  667.     {I_FLDENV, 1, {MEMORY,0,0}, "\300\1\xD9\204", IF_8086|IF_FPU},
  668.     {-1}
  669. };
  670.  
  671. static struct itemplate instrux_FLDL2E[] = {
  672.     {I_FLDL2E, 0, {0,0,0}, "\2\xD9\xEA", IF_8086|IF_FPU},
  673.     {-1}
  674. };
  675.  
  676. static struct itemplate instrux_FLDL2T[] = {
  677.     {I_FLDL2T, 0, {0,0,0}, "\2\xD9\xE9", IF_8086|IF_FPU},
  678.     {-1}
  679. };
  680.  
  681. static struct itemplate instrux_FLDLG2[] = {
  682.     {I_FLDLG2, 0, {0,0,0}, "\2\xD9\xEC", IF_8086|IF_FPU},
  683.     {-1}
  684. };
  685.  
  686. static struct itemplate instrux_FLDLN2[] = {
  687.     {I_FLDLN2, 0, {0,0,0}, "\2\xD9\xED", IF_8086|IF_FPU},
  688.     {-1}
  689. };
  690.  
  691. static struct itemplate instrux_FLDPI[] = {
  692.     {I_FLDPI, 0, {0,0,0}, "\2\xD9\xEB", IF_8086|IF_FPU},
  693.     {-1}
  694. };
  695.  
  696. static struct itemplate instrux_FLDZ[] = {
  697.     {I_FLDZ, 0, {0,0,0}, "\2\xD9\xEE", IF_8086|IF_FPU},
  698.     {-1}
  699. };
  700.  
  701. static struct itemplate instrux_FMUL[] = {
  702.     {I_FMUL, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\201", IF_8086|IF_FPU},
  703.     {I_FMUL, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\201", IF_8086|IF_FPU},
  704.     {I_FMUL, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xC8", IF_8086|IF_FPU},
  705.     {I_FMUL, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xC8", IF_8086|IF_FPU},
  706.     {I_FMUL, 1, {FPUREG,0,0}, "\1\xD8\10\xC8", IF_8086|IF_FPU},
  707.     {I_FMUL, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xC8", IF_8086|IF_FPU},
  708.     {-1}
  709. };
  710.  
  711. static struct itemplate instrux_FMULP[] = {
  712.     {I_FMULP, 1, {FPUREG,0,0}, "\1\xDE\10\xC8", IF_8086|IF_FPU},
  713.     {I_FMULP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xC8", IF_8086|IF_FPU},
  714.     {-1}
  715. };
  716.  
  717. static struct itemplate instrux_FNCLEX[] = {
  718.     {I_FNCLEX, 0, {0,0,0}, "\2\xDB\xE2", IF_8086|IF_FPU},
  719.     {-1}
  720. };
  721.  
  722. static struct itemplate instrux_FNDISI[] = {
  723.     {I_FNDISI, 0, {0,0,0}, "\2\xDB\xE1", IF_8086|IF_FPU},
  724.     {-1}
  725. };
  726.  
  727. static struct itemplate instrux_FNENI[] = {
  728.     {I_FNENI, 0, {0,0,0}, "\2\xDB\xE0", IF_8086|IF_FPU},
  729.     {-1}
  730. };
  731.  
  732. static struct itemplate instrux_FNINIT[] = {
  733.     {I_FNINIT, 0, {0,0,0}, "\2\xDB\xE3", IF_8086|IF_FPU},
  734.     {-1}
  735. };
  736.  
  737. static struct itemplate instrux_FNOP[] = {
  738.     {I_FNOP, 0, {0,0,0}, "\2\xD9\xD0", IF_8086|IF_FPU},
  739.     {-1}
  740. };
  741.  
  742. static struct itemplate instrux_FNSAVE[] = {
  743.     {I_FNSAVE, 1, {MEMORY,0,0}, "\300\1\xDD\206", IF_8086|IF_FPU},
  744.     {-1}
  745. };
  746.  
  747. static struct itemplate instrux_FNSTCW[] = {
  748.     {I_FNSTCW, 1, {MEMORY,0,0}, "\300\1\xD9\207", IF_8086|IF_FPU|IF_SW},
  749.     {-1}
  750. };
  751.  
  752. static struct itemplate instrux_FNSTENV[] = {
  753.     {I_FNSTENV, 1, {MEMORY,0,0}, "\300\1\xD9\206", IF_8086|IF_FPU},
  754.     {-1}
  755. };
  756.  
  757. static struct itemplate instrux_FNSTSW[] = {
  758.     {I_FNSTSW, 1, {MEMORY,0,0}, "\300\1\xDD\207", IF_8086|IF_FPU|IF_SW},
  759.     {I_FNSTSW, 1, {REG_AX,0,0}, "\2\xDF\xE0", IF_286|IF_FPU},
  760.     {-1}
  761. };
  762.  
  763. static struct itemplate instrux_FPATAN[] = {
  764.     {I_FPATAN, 0, {0,0,0}, "\2\xD9\xF3", IF_8086|IF_FPU},
  765.     {-1}
  766. };
  767.  
  768. static struct itemplate instrux_FPREM[] = {
  769.     {I_FPREM, 0, {0,0,0}, "\2\xD9\xF8", IF_8086|IF_FPU},
  770.     {-1}
  771. };
  772.  
  773. static struct itemplate instrux_FPREM1[] = {
  774.     {I_FPREM1, 0, {0,0,0}, "\2\xD9\xF5", IF_386|IF_FPU},
  775.     {-1}
  776. };
  777.  
  778. static struct itemplate instrux_FPTAN[] = {
  779.     {I_FPTAN, 0, {0,0,0}, "\2\xD9\xF2", IF_8086|IF_FPU},
  780.     {-1}
  781. };
  782.  
  783. static struct itemplate instrux_FRNDINT[] = {
  784.     {I_FRNDINT, 0, {0,0,0}, "\2\xD9\xFC", IF_8086|IF_FPU},
  785.     {-1}
  786. };
  787.  
  788. static struct itemplate instrux_FRSTOR[] = {
  789.     {I_FRSTOR, 1, {MEMORY,0,0}, "\300\1\xDD\204", IF_8086|IF_FPU},
  790.     {-1}
  791. };
  792.  
  793. static struct itemplate instrux_FSAVE[] = {
  794.     {I_FSAVE, 1, {MEMORY,0,0}, "\300\2\x9B\xDD\206", IF_8086|IF_FPU},
  795.     {-1}
  796. };
  797.  
  798. static struct itemplate instrux_FSCALE[] = {
  799.     {I_FSCALE, 0, {0,0,0}, "\2\xD9\xFD", IF_8086|IF_FPU},
  800.     {-1}
  801. };
  802.  
  803. static struct itemplate instrux_FSETPM[] = {
  804.     {I_FSETPM, 0, {0,0,0}, "\2\xDB\xE4", IF_286|IF_FPU},
  805.     {-1}
  806. };
  807.  
  808. static struct itemplate instrux_FSIN[] = {
  809.     {I_FSIN, 0, {0,0,0}, "\2\xD9\xFE", IF_386|IF_FPU},
  810.     {-1}
  811. };
  812.  
  813. static struct itemplate instrux_FSINCOS[] = {
  814.     {I_FSINCOS, 0, {0,0,0}, "\2\xD9\xFB", IF_386|IF_FPU},
  815.     {-1}
  816. };
  817.  
  818. static struct itemplate instrux_FSQRT[] = {
  819.     {I_FSQRT, 0, {0,0,0}, "\2\xD9\xFA", IF_8086|IF_FPU},
  820.     {-1}
  821. };
  822.  
  823. static struct itemplate instrux_FST[] = {
  824.     {I_FST, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\202", IF_8086|IF_FPU},
  825.     {I_FST, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\202", IF_8086|IF_FPU},
  826.     {I_FST, 1, {FPUREG,0,0}, "\1\xDD\10\xD0", IF_8086|IF_FPU},
  827.     {-1}
  828. };
  829.  
  830. static struct itemplate instrux_FSTCW[] = {
  831.     {I_FSTCW, 1, {MEMORY,0,0}, "\300\2\x9B\xD9\207", IF_8086|IF_FPU|IF_SW},
  832.     {-1}
  833. };
  834.  
  835. static struct itemplate instrux_FSTENV[] = {
  836.     {I_FSTENV, 1, {MEMORY,0,0}, "\300\2\x9B\xD9\206", IF_8086|IF_FPU},
  837.     {-1}
  838. };
  839.  
  840. static struct itemplate instrux_FSTP[] = {
  841.     {I_FSTP, 1, {MEMORY|BITS32,0,0}, "\300\1\xD9\203", IF_8086|IF_FPU},
  842.     {I_FSTP, 1, {MEMORY|BITS64,0,0}, "\300\1\xDD\203", IF_8086|IF_FPU},
  843.     {I_FSTP, 1, {MEMORY|BITS80,0,0}, "\300\1\xDB\207", IF_8086|IF_FPU},
  844.     {I_FSTP, 1, {FPUREG,0,0}, "\1\xDD\10\xD8", IF_8086|IF_FPU},
  845.     {-1}
  846. };
  847.  
  848. static struct itemplate instrux_FSTSW[] = {
  849.     {I_FSTSW, 1, {MEMORY,0,0}, "\300\2\x9B\xDD\207", IF_8086|IF_FPU|IF_SW},
  850.     {I_FSTSW, 1, {REG_AX,0,0}, "\3\x9B\xDF\xE0", IF_286|IF_FPU},
  851.     {-1}
  852. };
  853.  
  854. static struct itemplate instrux_FSUB[] = {
  855.     {I_FSUB, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\204", IF_8086|IF_FPU},
  856.     {I_FSUB, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\204", IF_8086|IF_FPU},
  857.     {I_FSUB, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xE8", IF_8086|IF_FPU},
  858.     {I_FSUB, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xE8", IF_8086|IF_FPU},
  859.     {I_FSUB, 1, {FPUREG,0,0}, "\1\xD8\10\xE0", IF_8086|IF_FPU},
  860.     {I_FSUB, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xE0", IF_8086|IF_FPU},
  861.     {-1}
  862. };
  863.  
  864. static struct itemplate instrux_FSUBP[] = {
  865.     {I_FSUBP, 1, {FPUREG,0,0}, "\1\xDE\10\xE8", IF_8086|IF_FPU},
  866.     {I_FSUBP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xE8", IF_8086|IF_FPU},
  867.     {-1}
  868. };
  869.  
  870. static struct itemplate instrux_FSUBR[] = {
  871.     {I_FSUBR, 1, {MEMORY|BITS32,0,0}, "\300\1\xD8\205", IF_8086|IF_FPU},
  872.     {I_FSUBR, 1, {MEMORY|BITS64,0,0}, "\300\1\xDC\205", IF_8086|IF_FPU},
  873.     {I_FSUBR, 1, {FPUREG|TO,0,0}, "\1\xDC\10\xE0", IF_8086|IF_FPU},
  874.     {I_FSUBR, 2, {FPUREG,FPU0,0}, "\1\xDC\10\xE0", IF_8086|IF_FPU},
  875.     {I_FSUBR, 1, {FPUREG,0,0}, "\1\xD8\10\xE8", IF_8086|IF_FPU},
  876.     {I_FSUBR, 2, {FPU0,FPUREG,0}, "\1\xD8\11\xE8", IF_8086|IF_FPU},
  877.     {-1}
  878. };
  879.  
  880. static struct itemplate instrux_FSUBRP[] = {
  881.     {I_FSUBRP, 1, {FPUREG,0,0}, "\1\xDE\10\xE0", IF_8086|IF_FPU},
  882.     {I_FSUBRP, 2, {FPUREG,FPU0,0}, "\1\xDE\10\xE0", IF_8086|IF_FPU},
  883.     {-1}
  884. };
  885.  
  886. static struct itemplate instrux_FTST[] = {
  887.     {I_FTST, 0, {0,0,0}, "\2\xD9\xE4", IF_8086|IF_FPU},
  888.     {-1}
  889. };
  890.  
  891. static struct itemplate instrux_FUCOM[] = {
  892.     {I_FUCOM, 1, {FPUREG,0,0}, "\1\xDD\10\xE0", IF_386|IF_FPU},
  893.     {I_FUCOM, 2, {FPU0,FPUREG,0}, "\1\xDD\11\xE0", IF_386|IF_FPU},
  894.     {-1}
  895. };
  896.  
  897. static struct itemplate instrux_FUCOMI[] = {
  898.     {I_FUCOMI, 1, {FPUREG,0,0}, "\1\xDB\10\xE8", IF_P6|IF_FPU},
  899.     {I_FUCOMI, 2, {FPU0,FPUREG,0}, "\1\xDB\11\xE8", IF_P6|IF_FPU},
  900.     {-1}
  901. };
  902.  
  903. static struct itemplate instrux_FUCOMIP[] = {
  904.     {I_FUCOMIP, 1, {FPUREG,0,0}, "\1\xDF\10\xE8", IF_P6|IF_FPU},
  905.     {I_FUCOMIP, 2, {FPU0,FPUREG,0}, "\1\xDF\11\xE8", IF_P6|IF_FPU},
  906.     {-1}
  907. };
  908.  
  909. static struct itemplate instrux_FUCOMP[] = {
  910.     {I_FUCOMP, 1, {FPUREG,0,0}, "\1\xDD\10\xE8", IF_386|IF_FPU},
  911.     {I_FUCOMP, 2, {FPU0,FPUREG,0}, "\1\xDD\11\xE8", IF_386|IF_FPU},
  912.     {-1}
  913. };
  914.  
  915. static struct itemplate instrux_FUCOMPP[] = {
  916.     {I_FUCOMPP, 0, {0,0,0}, "\2\xDA\xE9", IF_386|IF_FPU},
  917.     {-1}
  918. };
  919.  
  920. static struct itemplate instrux_FXAM[] = {
  921.     {I_FXAM, 0, {0,0,0}, "\2\xD9\xE5", IF_8086|IF_FPU},
  922.     {-1}
  923. };
  924.  
  925. static struct itemplate instrux_FXCH[] = {
  926.     {I_FXCH, 0, {0,0,0}, "\2\xD9\xC9", IF_8086|IF_FPU},
  927.     {I_FXCH, 1, {FPUREG,0,0}, "\1\xD9\10\xC8", IF_8086|IF_FPU},
  928.     {I_FXCH, 2, {FPUREG,FPU0,0}, "\1\xD9\10\xC8", IF_8086|IF_FPU},
  929.     {I_FXCH, 2, {FPU0,FPUREG,0}, "\1\xD9\11\xC8", IF_8086|IF_FPU},
  930.     {-1}
  931. };
  932.  
  933. static struct itemplate instrux_FXTRACT[] = {
  934.     {I_FXTRACT, 0, {0,0,0}, "\2\xD9\xF4", IF_8086|IF_FPU},
  935.     {-1}
  936. };
  937.  
  938. static struct itemplate instrux_FYL2X[] = {
  939.     {I_FYL2X, 0, {0,0,0}, "\2\xD9\xF1", IF_8086|IF_FPU},
  940.     {-1}
  941. };
  942.  
  943. static struct itemplate instrux_FYL2XP1[] = {
  944.     {I_FYL2XP1, 0, {0,0,0}, "\2\xD9\xF9", IF_8086|IF_FPU},
  945.     {-1}
  946. };
  947.  
  948. static struct itemplate instrux_HLT[] = {
  949.     {I_HLT, 0, {0,0,0}, "\1\xF4", IF_8086},
  950.     {-1}
  951. };
  952.  
  953. static struct itemplate instrux_IBTS[] = {
  954.     {I_IBTS, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xA7\101", IF_386|IF_SW|IF_UNDOC},
  955.     {I_IBTS, 2, {REG16,REG16,0}, "\320\300\2\x0F\xA7\101", IF_386|IF_UNDOC},
  956.     {I_IBTS, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xA7\101", IF_386|IF_SD|IF_UNDOC},
  957.     {I_IBTS, 2, {REG32,REG32,0}, "\321\300\2\x0F\xA7\101", IF_386|IF_UNDOC},
  958.     {-1}
  959. };
  960.  
  961. static struct itemplate instrux_ICEBP[] = {
  962.     {I_ICEBP, 0, {0,0,0}, "\1\xF1", IF_P6},
  963.     {-1}
  964. };
  965.  
  966. static struct itemplate instrux_IDIV[] = {
  967.     {I_IDIV, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\207", IF_8086},
  968.     {I_IDIV, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\207", IF_8086},
  969.     {I_IDIV, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\207", IF_386},
  970.     {-1}
  971. };
  972.  
  973. static struct itemplate instrux_IMUL[] = {
  974.     {I_IMUL, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\205", IF_8086},
  975.     {I_IMUL, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\205", IF_8086},
  976.     {I_IMUL, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\205", IF_386},
  977.     {I_IMUL, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xAF\110", IF_386|IF_SM},
  978.     {I_IMUL, 2, {REG16,REG16,0}, "\320\301\2\x0F\xAF\110", IF_386},
  979.     {I_IMUL, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xAF\110", IF_386|IF_SM},
  980.     {I_IMUL, 2, {REG32,REG32,0}, "\321\301\2\x0F\xAF\110", IF_386},
  981.     {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE|BITS8}, "\320\301\1\x6B\110\16", IF_286|IF_SM},
  982.     {I_IMUL, 3, {REG16,REG16,IMMEDIATE|BITS8}, "\320\301\1\x6B\110\16", IF_286},
  983.     {I_IMUL, 3, {REG16,MEMORY,IMMEDIATE}, "\320\301\1\x69\110\32", IF_286|IF_SM},
  984.     {I_IMUL, 3, {REG16,REG16,IMMEDIATE}, "\320\301\1\x69\110\32", IF_286|IF_SM},
  985.     {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE|BITS8}, "\321\301\1\x6B\110\16", IF_386|IF_SM},
  986.     {I_IMUL, 3, {REG32,REG32,IMMEDIATE|BITS8}, "\321\301\1\x6B\110\16", IF_386},
  987.     {I_IMUL, 3, {REG32,MEMORY,IMMEDIATE}, "\321\301\1\x69\110\42", IF_386|IF_SM},
  988.     {I_IMUL, 3, {REG32,REG32,IMMEDIATE}, "\321\301\1\x69\110\42", IF_386|IF_SM},
  989.     {I_IMUL, 2, {REG16,IMMEDIATE|BITS8,0}, "\320\1\x6B\100\15", IF_286},
  990.     {I_IMUL, 2, {REG16,IMMEDIATE,0}, "\320\1\x69\100\31", IF_286|IF_SM},
  991.     {I_IMUL, 2, {REG32,IMMEDIATE|BITS8,0}, "\321\1\x6B\100\15", IF_386},
  992.     {I_IMUL, 2, {REG32,IMMEDIATE,0}, "\321\1\x69\100\41", IF_386|IF_SM},
  993.     {-1}
  994. };
  995.  
  996. static struct itemplate instrux_IN[] = {
  997.     {I_IN, 2, {REG_AL,IMMEDIATE,0}, "\1\xE4\25", IF_8086},
  998.     {I_IN, 2, {REG_AX,IMMEDIATE,0}, "\320\1\xE5\25", IF_8086},
  999.     {I_IN, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\xE5\25", IF_386},
  1000.     {I_IN, 2, {REG_AL,REG_DX,0}, "\1\xEC", IF_8086},
  1001.     {I_IN, 2, {REG_AX,REG_DX,0}, "\320\1\xED", IF_8086},
  1002.     {I_IN, 2, {REG_EAX,REG_DX,0}, "\321\1\xED", IF_386},
  1003.     {-1}
  1004. };
  1005.  
  1006. static struct itemplate instrux_INC[] = {
  1007.     {I_INC, 1, {REG16,0,0}, "\320\10\x40", IF_8086},
  1008.     {I_INC, 1, {REG32,0,0}, "\321\10\x40", IF_386},
  1009.     {I_INC, 1, {REGMEM|BITS8,0,0}, "\300\1\xFE\200", IF_8086},
  1010.     {I_INC, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\200", IF_8086},
  1011.     {I_INC, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\200", IF_386},
  1012.     {-1}
  1013. };
  1014.  
  1015. static struct itemplate instrux_INCBIN[] = {
  1016.     {-1}
  1017. };
  1018.  
  1019. static struct itemplate instrux_INSB[] = {
  1020.     {I_INSB, 0, {0,0,0}, "\1\x6C", IF_186},
  1021.     {-1}
  1022. };
  1023.  
  1024. static struct itemplate instrux_INSD[] = {
  1025.     {I_INSD, 0, {0,0,0}, "\321\1\x6D", IF_386},
  1026.     {-1}
  1027. };
  1028.  
  1029. static struct itemplate instrux_INSW[] = {
  1030.     {I_INSW, 0, {0,0,0}, "\320\1\x6D", IF_186},
  1031.     {-1}
  1032. };
  1033.  
  1034. static struct itemplate instrux_INT[] = {
  1035.     {I_INT, 1, {IMMEDIATE,0,0}, "\1\xCD\24", IF_8086},
  1036.     {-1}
  1037. };
  1038.  
  1039. static struct itemplate instrux_INT01[] = {
  1040.     {I_INT01, 0, {0,0,0}, "\1\xF1", IF_P6},
  1041.     {-1}
  1042. };
  1043.  
  1044. static struct itemplate instrux_INT1[] = {
  1045.     {I_INT1, 0, {0,0,0}, "\1\xF1", IF_P6},
  1046.     {-1}
  1047. };
  1048.  
  1049. static struct itemplate instrux_INT3[] = {
  1050.     {I_INT3, 0, {0,0,0}, "\1\xCC", IF_8086},
  1051.     {-1}
  1052. };
  1053.  
  1054. static struct itemplate instrux_INTO[] = {
  1055.     {I_INTO, 0, {0,0,0}, "\1\xCE", IF_8086},
  1056.     {-1}
  1057. };
  1058.  
  1059. static struct itemplate instrux_INVD[] = {
  1060.     {I_INVD, 0, {0,0,0}, "\2\x0F\x08", IF_486},
  1061.     {-1}
  1062. };
  1063.  
  1064. static struct itemplate instrux_INVLPG[] = {
  1065.     {I_INVLPG, 1, {MEMORY,0,0}, "\300\2\x0F\x01\207", IF_486},
  1066.     {-1}
  1067. };
  1068.  
  1069. static struct itemplate instrux_IRET[] = {
  1070.     {I_IRET, 0, {0,0,0}, "\322\1\xCF", IF_8086},
  1071.     {-1}
  1072. };
  1073.  
  1074. static struct itemplate instrux_IRETD[] = {
  1075.     {I_IRETD, 0, {0,0,0}, "\321\1\xCF", IF_386},
  1076.     {-1}
  1077. };
  1078.  
  1079. static struct itemplate instrux_IRETW[] = {
  1080.     {I_IRETW, 0, {0,0,0}, "\320\1\xCF", IF_8086},
  1081.     {-1}
  1082. };
  1083.  
  1084. static struct itemplate instrux_JCXZ[] = {
  1085.     {I_JCXZ, 1, {IMMEDIATE,0,0}, "\320\1\xE3\50", IF_8086},
  1086.     {-1}
  1087. };
  1088.  
  1089. static struct itemplate instrux_JECXZ[] = {
  1090.     {I_JECXZ, 1, {IMMEDIATE,0,0}, "\321\1\xE3\50", IF_386},
  1091.     {-1}
  1092. };
  1093.  
  1094. static struct itemplate instrux_JMP[] = {
  1095.     {I_JMP, 1, {IMMEDIATE|SHORT,0,0}, "\1\xEB\50", IF_8086},
  1096.     {I_JMP, 1, {IMMEDIATE,0,0}, "\322\1\xE9\64", IF_8086},
  1097.     {I_JMP, 1, {IMMEDIATE|FAR,0,0}, "\322\1\xEA\34\37", IF_8086},
  1098.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE,0}, "\322\1\xEA\35\30", IF_8086},
  1099.     {I_JMP, 2, {IMMEDIATE|BITS16|COLON,IMMEDIATE,0}, "\320\1\xEA\31\30", IF_8086},
  1100.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS16,0}, "\320\1\xEA\31\30", IF_8086},
  1101.     {I_JMP, 2, {IMMEDIATE|BITS32|COLON,IMMEDIATE,0}, "\321\1\xEA\41\30", IF_386},
  1102.     {I_JMP, 2, {IMMEDIATE|COLON,IMMEDIATE|BITS32,0}, "\321\1\xEA\41\30", IF_386},
  1103.     {I_JMP, 1, {MEMORY|FAR,0,0}, "\322\300\1\xFF\205", IF_8086},
  1104.     {I_JMP, 1, {MEMORY|BITS16|FAR,0,0}, "\320\300\1\xFF\205", IF_8086},
  1105.     {I_JMP, 1, {MEMORY|BITS32|FAR,0,0}, "\321\300\1\xFF\205", IF_386},
  1106.     {I_JMP, 1, {MEMORY|NEAR,0,0}, "\322\300\1\xFF\204", IF_8086},
  1107.     {I_JMP, 1, {MEMORY|BITS16|NEAR,0,0}, "\320\300\1\xFF\204", IF_8086},
  1108.     {I_JMP, 1, {MEMORY|BITS32|NEAR,0,0}, "\321\300\1\xFF\204", IF_386},
  1109.     {I_JMP, 1, {REG16,0,0}, "\320\300\1\xFF\204", IF_8086},
  1110.     {I_JMP, 1, {REG32,0,0}, "\321\300\1\xFF\204", IF_386},
  1111.     {I_JMP, 1, {MEMORY,0,0}, "\322\300\1\xFF\204", IF_8086},
  1112.     {I_JMP, 1, {MEMORY|BITS16,0,0}, "\320\300\1\xFF\204", IF_8086},
  1113.     {I_JMP, 1, {MEMORY|BITS32,0,0}, "\321\300\1\xFF\204", IF_386},
  1114.     {-1}
  1115. };
  1116.  
  1117. static struct itemplate instrux_LAHF[] = {
  1118.     {I_LAHF, 0, {0,0,0}, "\1\x9F", IF_8086},
  1119.     {-1}
  1120. };
  1121.  
  1122. static struct itemplate instrux_LAR[] = {
  1123.     {I_LAR, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x02\110", IF_286|IF_PRIV|IF_SM},
  1124.     {I_LAR, 2, {REG16,REG16,0}, "\320\301\2\x0F\x02\110", IF_286|IF_PRIV},
  1125.     {I_LAR, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x02\110", IF_286|IF_PRIV|IF_SM},
  1126.     {I_LAR, 2, {REG32,REG32,0}, "\321\301\2\x0F\x02\110", IF_286|IF_PRIV},
  1127.     {-1}
  1128. };
  1129.  
  1130. static struct itemplate instrux_LDS[] = {
  1131.     {I_LDS, 2, {REG16,MEMORY,0}, "\320\301\1\xC5\110", IF_8086},
  1132.     {I_LDS, 2, {REG32,MEMORY,0}, "\321\301\1\xC5\110", IF_8086},
  1133.     {-1}
  1134. };
  1135.  
  1136. static struct itemplate instrux_LEA[] = {
  1137.     {I_LEA, 2, {REG16,MEMORY,0}, "\320\301\1\x8D\110", IF_8086},
  1138.     {I_LEA, 2, {REG32,MEMORY,0}, "\321\301\1\x8D\110", IF_8086},
  1139.     {-1}
  1140. };
  1141.  
  1142. static struct itemplate instrux_LEAVE[] = {
  1143.     {I_LEAVE, 0, {0,0,0}, "\1\xC9", IF_186},
  1144.     {-1}
  1145. };
  1146.  
  1147. static struct itemplate instrux_LES[] = {
  1148.     {I_LES, 2, {REG16,MEMORY,0}, "\320\301\1\xC4\110", IF_8086},
  1149.     {I_LES, 2, {REG32,MEMORY,0}, "\321\301\1\xC4\110", IF_8086},
  1150.     {-1}
  1151. };
  1152.  
  1153. static struct itemplate instrux_LFS[] = {
  1154.     {I_LFS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB4\110", IF_386},
  1155.     {I_LFS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB4\110", IF_386},
  1156.     {-1}
  1157. };
  1158.  
  1159. static struct itemplate instrux_LGDT[] = {
  1160.     {I_LGDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\202", IF_286|IF_PRIV},
  1161.     {-1}
  1162. };
  1163.  
  1164. static struct itemplate instrux_LGS[] = {
  1165.     {I_LGS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB5\110", IF_386},
  1166.     {I_LGS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB5\110", IF_386},
  1167.     {-1}
  1168. };
  1169.  
  1170. static struct itemplate instrux_LIDT[] = {
  1171.     {I_LIDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\203", IF_286|IF_PRIV},
  1172.     {-1}
  1173. };
  1174.  
  1175. static struct itemplate instrux_LLDT[] = {
  1176.     {I_LLDT, 1, {MEMORY,0,0}, "\300\1\x0F\17\202", IF_286|IF_PRIV},
  1177.     {I_LLDT, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\202", IF_286|IF_PRIV},
  1178.     {I_LLDT, 1, {REG16,0,0}, "\300\1\x0F\17\202", IF_286|IF_PRIV},
  1179.     {-1}
  1180. };
  1181.  
  1182. static struct itemplate instrux_LMSW[] = {
  1183.     {I_LMSW, 1, {MEMORY,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
  1184.     {I_LMSW, 1, {MEMORY|BITS16,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
  1185.     {I_LMSW, 1, {REG16,0,0}, "\300\2\x0F\x01\206", IF_286|IF_PRIV},
  1186.     {-1}
  1187. };
  1188.  
  1189. static struct itemplate instrux_LOADALL[] = {
  1190.     {I_LOADALL, 0, {0,0,0}, "\2\x0F\x07", IF_386|IF_UNDOC},
  1191.     {-1}
  1192. };
  1193.  
  1194. static struct itemplate instrux_LOADALL286[] = {
  1195.     {I_LOADALL286, 0, {0,0,0}, "\2\x0F\x05", IF_286|IF_UNDOC},
  1196.     {-1}
  1197. };
  1198.  
  1199. static struct itemplate instrux_LODSB[] = {
  1200.     {I_LODSB, 0, {0,0,0}, "\1\xAC", IF_8086},
  1201.     {-1}
  1202. };
  1203.  
  1204. static struct itemplate instrux_LODSD[] = {
  1205.     {I_LODSD, 0, {0,0,0}, "\321\1\xAD", IF_386},
  1206.     {-1}
  1207. };
  1208.  
  1209. static struct itemplate instrux_LODSW[] = {
  1210.     {I_LODSW, 0, {0,0,0}, "\320\1\xAD", IF_8086},
  1211.     {-1}
  1212. };
  1213.  
  1214. static struct itemplate instrux_LOOP[] = {
  1215.     {I_LOOP, 1, {IMMEDIATE,0,0}, "\312\1\xE2\50", IF_8086},
  1216.     {I_LOOP, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE2\50", IF_8086},
  1217.     {I_LOOP, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE2\50", IF_386},
  1218.     {-1}
  1219. };
  1220.  
  1221. static struct itemplate instrux_LOOPE[] = {
  1222.     {I_LOOPE, 1, {IMMEDIATE,0,0}, "\312\1\xE1\50", IF_8086},
  1223.     {I_LOOPE, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE1\50", IF_8086},
  1224.     {I_LOOPE, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE1\50", IF_386},
  1225.     {-1}
  1226. };
  1227.  
  1228. static struct itemplate instrux_LOOPNE[] = {
  1229.     {I_LOOPNE, 1, {IMMEDIATE,0,0}, "\312\1\xE0\50", IF_8086},
  1230.     {I_LOOPNE, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE0\50", IF_8086},
  1231.     {I_LOOPNE, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE0\50", IF_386},
  1232.     {-1}
  1233. };
  1234.  
  1235. static struct itemplate instrux_LOOPNZ[] = {
  1236.     {I_LOOPNZ, 1, {IMMEDIATE,0,0}, "\312\1\xE0\50", IF_8086},
  1237.     {I_LOOPNZ, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE0\50", IF_8086},
  1238.     {I_LOOPNZ, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE0\50", IF_386},
  1239.     {-1}
  1240. };
  1241.  
  1242. static struct itemplate instrux_LOOPZ[] = {
  1243.     {I_LOOPZ, 1, {IMMEDIATE,0,0}, "\312\1\xE1\50", IF_8086},
  1244.     {I_LOOPZ, 2, {IMMEDIATE,REG_CX,0}, "\310\1\xE1\50", IF_8086},
  1245.     {I_LOOPZ, 2, {IMMEDIATE,REG_ECX,0}, "\311\1\xE1\50", IF_386},
  1246.     {-1}
  1247. };
  1248.  
  1249. static struct itemplate instrux_LSL[] = {
  1250.     {I_LSL, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x03\110", IF_286|IF_PRIV|IF_SM},
  1251.     {I_LSL, 2, {REG16,REG16,0}, "\320\301\2\x0F\x03\110", IF_286|IF_PRIV},
  1252.     {I_LSL, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x03\110", IF_286|IF_PRIV|IF_SM},
  1253.     {I_LSL, 2, {REG32,REG32,0}, "\321\301\2\x0F\x03\110", IF_286|IF_PRIV},
  1254.     {-1}
  1255. };
  1256.  
  1257. static struct itemplate instrux_LSS[] = {
  1258.     {I_LSS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB2\110", IF_386},
  1259.     {I_LSS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xB2\110", IF_386},
  1260.     {-1}
  1261. };
  1262.  
  1263. static struct itemplate instrux_LTR[] = {
  1264.     {I_LTR, 1, {MEMORY,0,0}, "\300\1\x0F\17\203", IF_286|IF_PRIV},
  1265.     {I_LTR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\203", IF_286|IF_PRIV},
  1266.     {I_LTR, 1, {REG16,0,0}, "\300\1\x0F\17\203", IF_286|IF_PRIV},
  1267.     {-1}
  1268. };
  1269.  
  1270. static struct itemplate instrux_MOV[] = {
  1271.     {I_MOV, 2, {MEMORY,REG_CS,0}, "\320\300\1\x8C\201", IF_8086|IF_SM},
  1272.     {I_MOV, 2, {MEMORY,REG_DESS,0}, "\320\300\1\x8C\101", IF_8086|IF_SM},
  1273.     {I_MOV, 2, {MEMORY,REG_FSGS,0}, "\320\300\1\x8C\101", IF_386|IF_SM},
  1274.     {I_MOV, 2, {REG16,REG_CS,0}, "\320\300\1\x8C\201", IF_8086},
  1275.     {I_MOV, 2, {REG16,REG_DESS,0}, "\320\300\1\x8C\101", IF_8086},
  1276.     {I_MOV, 2, {REG16,REG_FSGS,0}, "\320\300\1\x8C\101", IF_386},
  1277.     {I_MOV, 2, {REGMEM|BITS32,REG_CS,0}, "\321\300\1\x8C\201", IF_8086},
  1278.     {I_MOV, 2, {REGMEM|BITS32,REG_DESS,0}, "\321\300\1\x8C\101", IF_8086},
  1279.     {I_MOV, 2, {REGMEM|BITS32,REG_FSGS,0}, "\321\300\1\x8C\101", IF_386},
  1280.     {I_MOV, 2, {REG_DESS,MEMORY,0}, "\320\301\1\x8E\110", IF_8086|IF_SM},
  1281.     {I_MOV, 2, {REG_FSGS,MEMORY,0}, "\320\301\1\x8E\110", IF_386|IF_SM},
  1282.     {I_MOV, 2, {REG_DESS,REG16,0}, "\320\301\1\x8E\110", IF_8086},
  1283.     {I_MOV, 2, {REG_FSGS,REG16,0}, "\320\301\1\x8E\110", IF_386},
  1284.     {I_MOV, 2, {REG_DESS,REGMEM|BITS32,0}, "\321\301\1\x8E\110", IF_8086},
  1285.     {I_MOV, 2, {REG_FSGS,REGMEM|BITS32,0}, "\321\301\1\x8E\110", IF_386},
  1286.     {I_MOV, 2, {REG_AL,MEM_OFFS,0}, "\301\1\xA0\35", IF_8086|IF_SM},
  1287.     {I_MOV, 2, {REG_AX,MEM_OFFS,0}, "\301\320\1\xA1\35", IF_8086|IF_SM},
  1288.     {I_MOV, 2, {REG_EAX,MEM_OFFS,0}, "\301\321\1\xA1\35", IF_386|IF_SM},
  1289.     {I_MOV, 2, {MEM_OFFS,REG_AL,0}, "\300\1\xA2\34", IF_8086|IF_SM},
  1290.     {I_MOV, 2, {MEM_OFFS,REG_AX,0}, "\300\320\1\xA3\34", IF_8086|IF_SM},
  1291.     {I_MOV, 2, {MEM_OFFS,REG_EAX,0}, "\300\321\1\xA3\34", IF_386|IF_SM},
  1292.     {I_MOV, 2, {REG32,REG_CR4,0}, "\2\x0F\x20\204", IF_PENT},
  1293.     {I_MOV, 2, {REG32,REG_CREG,0}, "\2\x0F\x20\101", IF_386},
  1294.     {I_MOV, 2, {REG32,REG_DREG,0}, "\2\x0F\x21\101", IF_386},
  1295.     {I_MOV, 2, {REG32,REG_TREG,0}, "\2\x0F\x24\101", IF_386},
  1296.     {I_MOV, 2, {REG_CR4,REG32,0}, "\2\x0F\x22\214", IF_PENT},
  1297.     {I_MOV, 2, {REG_CREG,REG32,0}, "\2\x0F\x22\110", IF_386},
  1298.     {I_MOV, 2, {REG_DREG,REG32,0}, "\2\x0F\x23\110", IF_386},
  1299.     {I_MOV, 2, {REG_TREG,REG32,0}, "\2\x0F\x26\110", IF_386},
  1300.     {I_MOV, 2, {MEMORY,REG8,0}, "\300\1\x88\101", IF_8086|IF_SM},
  1301.     {I_MOV, 2, {REG8,REG8,0}, "\300\1\x88\101", IF_8086},
  1302.     {I_MOV, 2, {MEMORY,REG16,0}, "\320\300\1\x89\101", IF_8086|IF_SM},
  1303.     {I_MOV, 2, {REG16,REG16,0}, "\320\300\1\x89\101", IF_8086},
  1304.     {I_MOV, 2, {MEMORY,REG32,0}, "\321\300\1\x89\101", IF_386|IF_SM},
  1305.     {I_MOV, 2, {REG32,REG32,0}, "\321\300\1\x89\101", IF_386},
  1306.     {I_MOV, 2, {REG8,MEMORY,0}, "\301\1\x8A\110", IF_8086|IF_SM},
  1307.     {I_MOV, 2, {REG8,REG8,0}, "\301\1\x8A\110", IF_8086},
  1308.     {I_MOV, 2, {REG16,MEMORY,0}, "\320\301\1\x8B\110", IF_8086|IF_SM},
  1309.     {I_MOV, 2, {REG16,REG16,0}, "\320\301\1\x8B\110", IF_8086},
  1310.     {I_MOV, 2, {REG32,MEMORY,0}, "\321\301\1\x8B\110", IF_386|IF_SM},
  1311.     {I_MOV, 2, {REG32,REG32,0}, "\321\301\1\x8B\110", IF_386},
  1312.     {I_MOV, 2, {REG8,IMMEDIATE,0}, "\10\xB0\21", IF_8086|IF_SM},
  1313.     {I_MOV, 2, {REG16,IMMEDIATE,0}, "\320\10\xB8\31", IF_8086|IF_SM},
  1314.     {I_MOV, 2, {REG32,IMMEDIATE,0}, "\321\10\xB8\41", IF_386|IF_SM},
  1315.     {I_MOV, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC6\200\21", IF_8086|IF_SM},
  1316.     {I_MOV, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC7\200\31", IF_8086|IF_SM},
  1317.     {I_MOV, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC7\200\41", IF_386|IF_SM},
  1318.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\xC6\200\21", IF_8086|IF_SM},
  1319.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\xC7\200\31", IF_8086|IF_SM},
  1320.     {I_MOV, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\xC7\200\41", IF_386|IF_SM},
  1321.     {-1}
  1322. };
  1323.  
  1324. static struct itemplate instrux_MOVD[] = {
  1325.     {I_MOVD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6E\110", IF_PENT|IF_MMX|IF_SD},
  1326.     {I_MOVD, 2, {MMXREG,REG32,0}, "\2\x0F\x6E\110", IF_PENT|IF_MMX},
  1327.     {I_MOVD, 2, {MEMORY,MMXREG,0}, "\300\2\x0F\x7E\101", IF_PENT|IF_MMX|IF_SD},
  1328.     {I_MOVD, 2, {REG32,MMXREG,0}, "\2\x0F\x7E\101", IF_PENT|IF_MMX},
  1329.     {-1}
  1330. };
  1331.  
  1332. static struct itemplate instrux_MOVQ[] = {
  1333.     {I_MOVQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6F\110", IF_PENT|IF_MMX|IF_SM},
  1334.     {I_MOVQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6F\110", IF_PENT|IF_MMX},
  1335.     {I_MOVQ, 2, {MEMORY,MMXREG,0}, "\300\2\x0F\x7F\101", IF_PENT|IF_MMX|IF_SM},
  1336.     {I_MOVQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x7F\101", IF_PENT|IF_MMX},
  1337.     {-1}
  1338. };
  1339.  
  1340. static struct itemplate instrux_MOVSB[] = {
  1341.     {I_MOVSB, 0, {0,0,0}, "\1\xA4", IF_8086},
  1342.     {-1}
  1343. };
  1344.  
  1345. static struct itemplate instrux_MOVSD[] = {
  1346.     {I_MOVSD, 0, {0,0,0}, "\321\1\xA5", IF_386},
  1347.     {-1}
  1348. };
  1349.  
  1350. static struct itemplate instrux_MOVSW[] = {
  1351.     {I_MOVSW, 0, {0,0,0}, "\320\1\xA5", IF_8086},
  1352.     {-1}
  1353. };
  1354.  
  1355. static struct itemplate instrux_MOVSX[] = {
  1356.     {I_MOVSX, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xBE\110", IF_386|IF_SB},
  1357.     {I_MOVSX, 2, {REG16,REG8,0}, "\320\301\2\x0F\xBE\110", IF_386},
  1358.     {I_MOVSX, 2, {REG32,REGMEM|BITS8,0}, "\321\301\2\x0F\xBE\110", IF_386},
  1359.     {I_MOVSX, 2, {REG32,REGMEM|BITS16,0}, "\321\301\2\x0F\xBF\110", IF_386},
  1360.     {-1}
  1361. };
  1362.  
  1363. static struct itemplate instrux_MOVZX[] = {
  1364.     {I_MOVZX, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xB6\110", IF_386|IF_SB},
  1365.     {I_MOVZX, 2, {REG16,REG8,0}, "\320\301\2\x0F\xB6\110", IF_386},
  1366.     {I_MOVZX, 2, {REG32,REGMEM|BITS8,0}, "\321\301\2\x0F\xB6\110", IF_386},
  1367.     {I_MOVZX, 2, {REG32,REGMEM|BITS16,0}, "\321\301\2\x0F\xB7\110", IF_386},
  1368.     {-1}
  1369. };
  1370.  
  1371. static struct itemplate instrux_MUL[] = {
  1372.     {I_MUL, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\204", IF_8086},
  1373.     {I_MUL, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\204", IF_8086},
  1374.     {I_MUL, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\204", IF_386},
  1375.     {-1}
  1376. };
  1377.  
  1378. static struct itemplate instrux_NEG[] = {
  1379.     {I_NEG, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\203", IF_8086},
  1380.     {I_NEG, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\203", IF_8086},
  1381.     {I_NEG, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\203", IF_386},
  1382.     {-1}
  1383. };
  1384.  
  1385. static struct itemplate instrux_NOP[] = {
  1386.     {I_NOP, 0, {0,0,0}, "\1\x90", IF_8086},
  1387.     {-1}
  1388. };
  1389.  
  1390. static struct itemplate instrux_NOT[] = {
  1391.     {I_NOT, 1, {REGMEM|BITS8,0,0}, "\300\1\xF6\202", IF_8086},
  1392.     {I_NOT, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xF7\202", IF_8086},
  1393.     {I_NOT, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xF7\202", IF_386},
  1394.     {-1}
  1395. };
  1396.  
  1397. static struct itemplate instrux_OR[] = {
  1398.     {I_OR, 2, {MEMORY,REG8,0}, "\300\1\x08\101", IF_8086|IF_SM},
  1399.     {I_OR, 2, {REG8,REG8,0}, "\300\1\x08\101", IF_8086},
  1400.     {I_OR, 2, {MEMORY,REG16,0}, "\320\300\1\x09\101", IF_8086|IF_SM},
  1401.     {I_OR, 2, {REG16,REG16,0}, "\320\300\1\x09\101", IF_8086},
  1402.     {I_OR, 2, {MEMORY,REG32,0}, "\321\300\1\x09\101", IF_386|IF_SM},
  1403.     {I_OR, 2, {REG32,REG32,0}, "\321\300\1\x09\101", IF_386},
  1404.     {I_OR, 2, {REG8,MEMORY,0}, "\301\1\x0A\110", IF_8086|IF_SM},
  1405.     {I_OR, 2, {REG8,REG8,0}, "\301\1\x0A\110", IF_8086},
  1406.     {I_OR, 2, {REG16,MEMORY,0}, "\320\301\1\x0B\110", IF_8086|IF_SM},
  1407.     {I_OR, 2, {REG16,REG16,0}, "\320\301\1\x0B\110", IF_8086},
  1408.     {I_OR, 2, {REG32,MEMORY,0}, "\321\301\1\x0B\110", IF_386|IF_SM},
  1409.     {I_OR, 2, {REG32,REG32,0}, "\321\301\1\x0B\110", IF_386},
  1410.     {I_OR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\201\15", IF_8086},
  1411.     {I_OR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\201\15", IF_386},
  1412.     {I_OR, 2, {REG_AL,IMMEDIATE,0}, "\1\x0C\21", IF_8086|IF_SM},
  1413.     {I_OR, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x0D\31", IF_8086|IF_SM},
  1414.     {I_OR, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x0D\41", IF_386|IF_SM},
  1415.     {I_OR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\201\21", IF_8086|IF_SM},
  1416.     {I_OR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\201\31", IF_8086|IF_SM},
  1417.     {I_OR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\201\41", IF_386|IF_SM},
  1418.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\201\21", IF_8086|IF_SM},
  1419.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\201\31", IF_8086|IF_SM},
  1420.     {I_OR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\201\41", IF_386|IF_SM},
  1421.     {-1}
  1422. };
  1423.  
  1424. static struct itemplate instrux_OUT[] = {
  1425.     {I_OUT, 2, {IMMEDIATE,REG_AL,0}, "\1\xE6\24", IF_8086},
  1426.     {I_OUT, 2, {IMMEDIATE,REG_AX,0}, "\320\1\xE7\24", IF_8086},
  1427.     {I_OUT, 2, {IMMEDIATE,REG_EAX,0}, "\321\1\xE7\24", IF_386},
  1428.     {I_OUT, 2, {REG_DX,REG_AL,0}, "\1\xEE", IF_8086},
  1429.     {I_OUT, 2, {REG_DX,REG_AX,0}, "\320\1\xEF", IF_8086},
  1430.     {I_OUT, 2, {REG_DX,REG_EAX,0}, "\321\1\xEF", IF_386},
  1431.     {-1}
  1432. };
  1433.  
  1434. static struct itemplate instrux_OUTSB[] = {
  1435.     {I_OUTSB, 0, {0,0,0}, "\1\x6E", IF_186},
  1436.     {-1}
  1437. };
  1438.  
  1439. static struct itemplate instrux_OUTSD[] = {
  1440.     {I_OUTSD, 0, {0,0,0}, "\321\1\x6F", IF_386},
  1441.     {-1}
  1442. };
  1443.  
  1444. static struct itemplate instrux_OUTSW[] = {
  1445.     {I_OUTSW, 0, {0,0,0}, "\320\1\x6F", IF_186},
  1446.     {-1}
  1447. };
  1448.  
  1449. static struct itemplate instrux_PACKSSDW[] = {
  1450.     {I_PACKSSDW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6B\110", IF_PENT|IF_MMX|IF_SM},
  1451.     {I_PACKSSDW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6B\110", IF_PENT|IF_MMX},
  1452.     {-1}
  1453. };
  1454.  
  1455. static struct itemplate instrux_PACKSSWB[] = {
  1456.     {I_PACKSSWB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x63\110", IF_PENT|IF_MMX|IF_SM},
  1457.     {I_PACKSSWB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x63\110", IF_PENT|IF_MMX},
  1458.     {-1}
  1459. };
  1460.  
  1461. static struct itemplate instrux_PACKUSWB[] = {
  1462.     {I_PACKUSWB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x67\110", IF_PENT|IF_MMX|IF_SM},
  1463.     {I_PACKUSWB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x67\110", IF_PENT|IF_MMX},
  1464.     {-1}
  1465. };
  1466.  
  1467. static struct itemplate instrux_PADDB[] = {
  1468.     {I_PADDB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFC\110", IF_PENT|IF_MMX|IF_SM},
  1469.     {I_PADDB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFC\110", IF_PENT|IF_MMX},
  1470.     {-1}
  1471. };
  1472.  
  1473. static struct itemplate instrux_PADDD[] = {
  1474.     {I_PADDD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFE\110", IF_PENT|IF_MMX|IF_SM},
  1475.     {I_PADDD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFE\110", IF_PENT|IF_MMX},
  1476.     {-1}
  1477. };
  1478.  
  1479. static struct itemplate instrux_PADDSB[] = {
  1480.     {I_PADDSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEC\110", IF_PENT|IF_MMX|IF_SM},
  1481.     {I_PADDSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEC\110", IF_PENT|IF_MMX},
  1482.     {-1}
  1483. };
  1484.  
  1485. static struct itemplate instrux_PADDSIW[] = {
  1486.     {I_PADDSIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x51\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1487.     {I_PADDSIW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x51\110", IF_PENT|IF_MMX|IF_CYRIX},
  1488.     {-1}
  1489. };
  1490.  
  1491. static struct itemplate instrux_PADDSW[] = {
  1492.     {I_PADDSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xED\110", IF_PENT|IF_MMX|IF_SM},
  1493.     {I_PADDSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xED\110", IF_PENT|IF_MMX},
  1494.     {-1}
  1495. };
  1496.  
  1497. static struct itemplate instrux_PADDUSB[] = {
  1498.     {I_PADDUSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDC\110", IF_PENT|IF_MMX|IF_SM},
  1499.     {I_PADDUSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDC\110", IF_PENT|IF_MMX},
  1500.     {-1}
  1501. };
  1502.  
  1503. static struct itemplate instrux_PADDUSW[] = {
  1504.     {I_PADDUSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDD\110", IF_PENT|IF_MMX|IF_SM},
  1505.     {I_PADDUSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDD\110", IF_PENT|IF_MMX},
  1506.     {-1}
  1507. };
  1508.  
  1509. static struct itemplate instrux_PADDW[] = {
  1510.     {I_PADDW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFD\110", IF_PENT|IF_MMX|IF_SM},
  1511.     {I_PADDW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFD\110", IF_PENT|IF_MMX},
  1512.     {-1}
  1513. };
  1514.  
  1515. static struct itemplate instrux_PAND[] = {
  1516.     {I_PAND, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDB\110", IF_PENT|IF_MMX|IF_SM},
  1517.     {I_PAND, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDB\110", IF_PENT|IF_MMX},
  1518.     {-1}
  1519. };
  1520.  
  1521. static struct itemplate instrux_PANDN[] = {
  1522.     {I_PANDN, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xDF\110", IF_PENT|IF_MMX|IF_SM},
  1523.     {I_PANDN, 2, {MMXREG,MMXREG,0}, "\2\x0F\xDF\110", IF_PENT|IF_MMX},
  1524.     {-1}
  1525. };
  1526.  
  1527. static struct itemplate instrux_PAVEB[] = {
  1528.     {I_PAVEB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x50\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1529.     {I_PAVEB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x50\110", IF_PENT|IF_MMX|IF_CYRIX},
  1530.     {-1}
  1531. };
  1532.  
  1533. static struct itemplate instrux_PCMPEQB[] = {
  1534.     {I_PCMPEQB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x74\110", IF_PENT|IF_MMX|IF_SM},
  1535.     {I_PCMPEQB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x74\110", IF_PENT|IF_MMX},
  1536.     {-1}
  1537. };
  1538.  
  1539. static struct itemplate instrux_PCMPEQD[] = {
  1540.     {I_PCMPEQD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x76\110", IF_PENT|IF_MMX|IF_SM},
  1541.     {I_PCMPEQD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x76\110", IF_PENT|IF_MMX},
  1542.     {-1}
  1543. };
  1544.  
  1545. static struct itemplate instrux_PCMPEQW[] = {
  1546.     {I_PCMPEQW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x75\110", IF_PENT|IF_MMX|IF_SM},
  1547.     {I_PCMPEQW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x75\110", IF_PENT|IF_MMX},
  1548.     {-1}
  1549. };
  1550.  
  1551. static struct itemplate instrux_PCMPGTB[] = {
  1552.     {I_PCMPGTB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x64\110", IF_PENT|IF_MMX|IF_SM},
  1553.     {I_PCMPGTB, 2, {MMXREG,MMXREG,0}, "\2\x0F\x64\110", IF_PENT|IF_MMX},
  1554.     {-1}
  1555. };
  1556.  
  1557. static struct itemplate instrux_PCMPGTD[] = {
  1558.     {I_PCMPGTD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x66\110", IF_PENT|IF_MMX|IF_SM},
  1559.     {I_PCMPGTD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x66\110", IF_PENT|IF_MMX},
  1560.     {-1}
  1561. };
  1562.  
  1563. static struct itemplate instrux_PCMPGTW[] = {
  1564.     {I_PCMPGTW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x65\110", IF_PENT|IF_MMX|IF_SM},
  1565.     {I_PCMPGTW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x65\110", IF_PENT|IF_MMX},
  1566.     {-1}
  1567. };
  1568.  
  1569. static struct itemplate instrux_PDISTIB[] = {
  1570.     {I_PDISTIB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x54\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1571.     {-1}
  1572. };
  1573.  
  1574. static struct itemplate instrux_PMACHRIW[] = {
  1575.     {I_PMACHRIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5E\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1576.     {-1}
  1577. };
  1578.  
  1579. static struct itemplate instrux_PMADDWD[] = {
  1580.     {I_PMADDWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF5\110", IF_PENT|IF_MMX|IF_SM},
  1581.     {I_PMADDWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF5\110", IF_PENT|IF_MMX},
  1582.     {-1}
  1583. };
  1584.  
  1585. static struct itemplate instrux_PMAGW[] = {
  1586.     {I_PMAGW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x52\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1587.     {I_PMAGW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x52\110", IF_PENT|IF_MMX|IF_CYRIX},
  1588.     {-1}
  1589. };
  1590.  
  1591. static struct itemplate instrux_PMULHRW[] = {
  1592.     {I_PMULHRW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x59\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1593.     {I_PMULHRW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x59\110", IF_PENT|IF_MMX|IF_CYRIX},
  1594.     {-1}
  1595. };
  1596.  
  1597. static struct itemplate instrux_PMULHRIW[] = {
  1598.     {I_PMULHRIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5D\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1599.     {I_PMULHRIW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x5D\110", IF_PENT|IF_MMX|IF_CYRIX},
  1600.     {-1}
  1601. };
  1602.  
  1603. static struct itemplate instrux_PMULHW[] = {
  1604.     {I_PMULHW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE5\110", IF_PENT|IF_MMX|IF_SM},
  1605.     {I_PMULHW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE5\110", IF_PENT|IF_MMX},
  1606.     {-1}
  1607. };
  1608.  
  1609. static struct itemplate instrux_PMULLW[] = {
  1610.     {I_PMULLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD5\110", IF_PENT|IF_MMX|IF_SM},
  1611.     {I_PMULLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD5\110", IF_PENT|IF_MMX},
  1612.     {-1}
  1613. };
  1614.  
  1615. static struct itemplate instrux_PMVGEZB[] = {
  1616.     {I_PMVGEZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5C\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1617.     {-1}
  1618. };
  1619.  
  1620. static struct itemplate instrux_PMVLZB[] = {
  1621.     {I_PMVLZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5B\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1622.     {-1}
  1623. };
  1624.  
  1625. static struct itemplate instrux_PMVNZB[] = {
  1626.     {I_PMVNZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x5A\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1627.     {-1}
  1628. };
  1629.  
  1630. static struct itemplate instrux_PMVZB[] = {
  1631.     {I_PMVZB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x58\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1632.     {-1}
  1633. };
  1634.  
  1635. static struct itemplate instrux_POP[] = {
  1636.     {I_POP, 1, {REG16,0,0}, "\320\10\x58", IF_8086},
  1637.     {I_POP, 1, {REG32,0,0}, "\321\10\x58", IF_386},
  1638.     {I_POP, 1, {REGMEM|BITS16,0,0}, "\320\300\1\x8F\200", IF_8086},
  1639.     {I_POP, 1, {REGMEM|BITS32,0,0}, "\321\300\1\x8F\200", IF_386},
  1640.     {I_POP, 1, {REG_CS,0,0}, "\1\x0F", IF_8086|IF_UNDOC},
  1641.     {I_POP, 1, {REG_DESS,0,0}, "\4", IF_8086},
  1642.     {I_POP, 1, {REG_FSGS,0,0}, "\1\x0F\5", IF_386},
  1643.     {-1}
  1644. };
  1645.  
  1646. static struct itemplate instrux_POPA[] = {
  1647.     {I_POPA, 0, {0,0,0}, "\322\1\x61", IF_186},
  1648.     {-1}
  1649. };
  1650.  
  1651. static struct itemplate instrux_POPAD[] = {
  1652.     {I_POPAD, 0, {0,0,0}, "\321\1\x61", IF_386},
  1653.     {-1}
  1654. };
  1655.  
  1656. static struct itemplate instrux_POPAW[] = {
  1657.     {I_POPAW, 0, {0,0,0}, "\320\1\x61", IF_186},
  1658.     {-1}
  1659. };
  1660.  
  1661. static struct itemplate instrux_POPF[] = {
  1662.     {I_POPF, 0, {0,0,0}, "\322\1\x9D", IF_186},
  1663.     {-1}
  1664. };
  1665.  
  1666. static struct itemplate instrux_POPFD[] = {
  1667.     {I_POPFD, 0, {0,0,0}, "\321\1\x9D", IF_386},
  1668.     {-1}
  1669. };
  1670.  
  1671. static struct itemplate instrux_POPFW[] = {
  1672.     {I_POPFW, 0, {0,0,0}, "\320\1\x9D", IF_186},
  1673.     {-1}
  1674. };
  1675.  
  1676. static struct itemplate instrux_POR[] = {
  1677.     {I_POR, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEB\110", IF_PENT|IF_MMX|IF_SM},
  1678.     {I_POR, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEB\110", IF_PENT|IF_MMX},
  1679.     {-1}
  1680. };
  1681.  
  1682. static struct itemplate instrux_PSLLD[] = {
  1683.     {I_PSLLD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF2\110", IF_PENT|IF_MMX|IF_SM},
  1684.     {I_PSLLD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF2\110", IF_PENT|IF_MMX},
  1685.     {I_PSLLD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\206\25", IF_PENT|IF_MMX},
  1686.     {-1}
  1687. };
  1688.  
  1689. static struct itemplate instrux_PSLLQ[] = {
  1690.     {I_PSLLQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF3\110", IF_PENT|IF_MMX|IF_SM},
  1691.     {I_PSLLQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF3\110", IF_PENT|IF_MMX},
  1692.     {I_PSLLQ, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x73\206\25", IF_PENT|IF_MMX},
  1693.     {-1}
  1694. };
  1695.  
  1696. static struct itemplate instrux_PSLLW[] = {
  1697.     {I_PSLLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF1\110", IF_PENT|IF_MMX|IF_SM},
  1698.     {I_PSLLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF1\110", IF_PENT|IF_MMX},
  1699.     {I_PSLLW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\206\25", IF_PENT|IF_MMX},
  1700.     {-1}
  1701. };
  1702.  
  1703. static struct itemplate instrux_PSRAD[] = {
  1704.     {I_PSRAD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE2\110", IF_PENT|IF_MMX|IF_SM},
  1705.     {I_PSRAD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE2\110", IF_PENT|IF_MMX},
  1706.     {I_PSRAD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\204\25", IF_PENT|IF_MMX},
  1707.     {-1}
  1708. };
  1709.  
  1710. static struct itemplate instrux_PSRAW[] = {
  1711.     {I_PSRAW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE1\110", IF_PENT|IF_MMX|IF_SM},
  1712.     {I_PSRAW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE1\110", IF_PENT|IF_MMX},
  1713.     {I_PSRAW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\204\25", IF_PENT|IF_MMX},
  1714.     {-1}
  1715. };
  1716.  
  1717. static struct itemplate instrux_PSRLD[] = {
  1718.     {I_PSRLD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD2\110", IF_PENT|IF_MMX|IF_SM},
  1719.     {I_PSRLD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD2\110", IF_PENT|IF_MMX},
  1720.     {I_PSRLD, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x72\202\25", IF_PENT|IF_MMX},
  1721.     {-1}
  1722. };
  1723.  
  1724. static struct itemplate instrux_PSRLQ[] = {
  1725.     {I_PSRLQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD3\110", IF_PENT|IF_MMX|IF_SM},
  1726.     {I_PSRLQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD3\110", IF_PENT|IF_MMX},
  1727.     {I_PSRLQ, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x73\202\25", IF_PENT|IF_MMX},
  1728.     {-1}
  1729. };
  1730.  
  1731. static struct itemplate instrux_PSRLW[] = {
  1732.     {I_PSRLW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD1\110", IF_PENT|IF_MMX|IF_SM},
  1733.     {I_PSRLW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD1\110", IF_PENT|IF_MMX},
  1734.     {I_PSRLW, 2, {MMXREG,IMMEDIATE,0}, "\2\x0F\x71\202\25", IF_PENT|IF_MMX},
  1735.     {-1}
  1736. };
  1737.  
  1738. static struct itemplate instrux_PSUBB[] = {
  1739.     {I_PSUBB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF8\110", IF_PENT|IF_MMX|IF_SM},
  1740.     {I_PSUBB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF8\110", IF_PENT|IF_MMX},
  1741.     {-1}
  1742. };
  1743.  
  1744. static struct itemplate instrux_PSUBD[] = {
  1745.     {I_PSUBD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xFA\110", IF_PENT|IF_MMX|IF_SM},
  1746.     {I_PSUBD, 2, {MMXREG,MMXREG,0}, "\2\x0F\xFA\110", IF_PENT|IF_MMX},
  1747.     {-1}
  1748. };
  1749.  
  1750. static struct itemplate instrux_PSUBSB[] = {
  1751.     {I_PSUBSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE8\110", IF_PENT|IF_MMX|IF_SM},
  1752.     {I_PSUBSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE8\110", IF_PENT|IF_MMX},
  1753.     {-1}
  1754. };
  1755.  
  1756. static struct itemplate instrux_PSUBSIW[] = {
  1757.     {I_PSUBSIW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x55\110", IF_PENT|IF_MMX|IF_SM|IF_CYRIX},
  1758.     {I_PSUBSIW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x55\110", IF_PENT|IF_MMX|IF_CYRIX},
  1759.     {-1}
  1760. };
  1761.  
  1762. static struct itemplate instrux_PSUBSW[] = {
  1763.     {I_PSUBSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xE9\110", IF_PENT|IF_MMX|IF_SM},
  1764.     {I_PSUBSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xE9\110", IF_PENT|IF_MMX},
  1765.     {-1}
  1766. };
  1767.  
  1768. static struct itemplate instrux_PSUBUSB[] = {
  1769.     {I_PSUBUSB, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD8\110", IF_PENT|IF_MMX|IF_SM},
  1770.     {I_PSUBUSB, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD8\110", IF_PENT|IF_MMX},
  1771.     {-1}
  1772. };
  1773.  
  1774. static struct itemplate instrux_PSUBUSW[] = {
  1775.     {I_PSUBUSW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xD9\110", IF_PENT|IF_MMX|IF_SM},
  1776.     {I_PSUBUSW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xD9\110", IF_PENT|IF_MMX},
  1777.     {-1}
  1778. };
  1779.  
  1780. static struct itemplate instrux_PSUBW[] = {
  1781.     {I_PSUBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xF9\110", IF_PENT|IF_MMX|IF_SM},
  1782.     {I_PSUBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\xF9\110", IF_PENT|IF_MMX},
  1783.     {-1}
  1784. };
  1785.  
  1786. static struct itemplate instrux_PUNPCKHBW[] = {
  1787.     {I_PUNPCKHBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x68\110", IF_PENT|IF_MMX|IF_SM},
  1788.     {I_PUNPCKHBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x68\110", IF_PENT|IF_MMX},
  1789.     {-1}
  1790. };
  1791.  
  1792. static struct itemplate instrux_PUNPCKHDQ[] = {
  1793.     {I_PUNPCKHDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x6A\110", IF_PENT|IF_MMX|IF_SM},
  1794.     {I_PUNPCKHDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x6A\110", IF_PENT|IF_MMX},
  1795.     {-1}
  1796. };
  1797.  
  1798. static struct itemplate instrux_PUNPCKHWD[] = {
  1799.     {I_PUNPCKHWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x69\110", IF_PENT|IF_MMX|IF_SM},
  1800.     {I_PUNPCKHWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x69\110", IF_PENT|IF_MMX},
  1801.     {-1}
  1802. };
  1803.  
  1804. static struct itemplate instrux_PUNPCKLBW[] = {
  1805.     {I_PUNPCKLBW, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x60\110", IF_PENT|IF_MMX|IF_SM},
  1806.     {I_PUNPCKLBW, 2, {MMXREG,MMXREG,0}, "\2\x0F\x60\110", IF_PENT|IF_MMX},
  1807.     {-1}
  1808. };
  1809.  
  1810. static struct itemplate instrux_PUNPCKLDQ[] = {
  1811.     {I_PUNPCKLDQ, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x62\110", IF_PENT|IF_MMX|IF_SM},
  1812.     {I_PUNPCKLDQ, 2, {MMXREG,MMXREG,0}, "\2\x0F\x62\110", IF_PENT|IF_MMX},
  1813.     {-1}
  1814. };
  1815.  
  1816. static struct itemplate instrux_PUNPCKLWD[] = {
  1817.     {I_PUNPCKLWD, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\x61\110", IF_PENT|IF_MMX|IF_SM},
  1818.     {I_PUNPCKLWD, 2, {MMXREG,MMXREG,0}, "\2\x0F\x61\110", IF_PENT|IF_MMX},
  1819.     {-1}
  1820. };
  1821.  
  1822. static struct itemplate instrux_PUSH[] = {
  1823.     {I_PUSH, 1, {REG16,0,0}, "\320\10\x50", IF_8086},
  1824.     {I_PUSH, 1, {REG32,0,0}, "\321\10\x50", IF_386},
  1825.     {I_PUSH, 1, {REGMEM|BITS16,0,0}, "\320\300\1\xFF\206", IF_8086},
  1826.     {I_PUSH, 1, {REGMEM|BITS32,0,0}, "\321\300\1\xFF\206", IF_386},
  1827.     {I_PUSH, 1, {REG_FSGS,0,0}, "\1\x0F\7", IF_386},
  1828.     {I_PUSH, 1, {REG_SREG,0,0}, "\6", IF_8086},
  1829.     {I_PUSH, 1, {IMMEDIATE|BITS8,0,0}, "\1\x6A\14", IF_286},
  1830.     {I_PUSH, 1, {IMMEDIATE|BITS16,0,0}, "\320\1\x68\30", IF_286},
  1831.     {I_PUSH, 1, {IMMEDIATE|BITS32,0,0}, "\321\1\x68\40", IF_386},
  1832.     {-1}
  1833. };
  1834.  
  1835. static struct itemplate instrux_PUSHA[] = {
  1836.     {I_PUSHA, 0, {0,0,0}, "\322\1\x60", IF_186},
  1837.     {-1}
  1838. };
  1839.  
  1840. static struct itemplate instrux_PUSHAD[] = {
  1841.     {I_PUSHAD, 0, {0,0,0}, "\321\1\x60", IF_386},
  1842.     {-1}
  1843. };
  1844.  
  1845. static struct itemplate instrux_PUSHAW[] = {
  1846.     {I_PUSHAW, 0, {0,0,0}, "\320\1\x60", IF_186},
  1847.     {-1}
  1848. };
  1849.  
  1850. static struct itemplate instrux_PUSHF[] = {
  1851.     {I_PUSHF, 0, {0,0,0}, "\322\1\x9C", IF_186},
  1852.     {-1}
  1853. };
  1854.  
  1855. static struct itemplate instrux_PUSHFD[] = {
  1856.     {I_PUSHFD, 0, {0,0,0}, "\321\1\x9C", IF_386},
  1857.     {-1}
  1858. };
  1859.  
  1860. static struct itemplate instrux_PUSHFW[] = {
  1861.     {I_PUSHFW, 0, {0,0,0}, "\320\1\x9C", IF_186},
  1862.     {-1}
  1863. };
  1864.  
  1865. static struct itemplate instrux_PXOR[] = {
  1866.     {I_PXOR, 2, {MMXREG,MEMORY,0}, "\301\2\x0F\xEF\110", IF_PENT|IF_MMX|IF_SM},
  1867.     {I_PXOR, 2, {MMXREG,MMXREG,0}, "\2\x0F\xEF\110", IF_PENT|IF_MMX},
  1868.     {-1}
  1869. };
  1870.  
  1871. static struct itemplate instrux_RCL[] = {
  1872.     {I_RCL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\202", IF_8086},
  1873.     {I_RCL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\202", IF_8086},
  1874.     {I_RCL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\202\25", IF_286|IF_SB},
  1875.     {I_RCL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\202", IF_8086},
  1876.     {I_RCL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\202", IF_8086},
  1877.     {I_RCL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\202\25", IF_286|IF_SB},
  1878.     {I_RCL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\202", IF_386},
  1879.     {I_RCL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\202", IF_386},
  1880.     {I_RCL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\202\25", IF_386|IF_SB},
  1881.     {-1}
  1882. };
  1883.  
  1884. static struct itemplate instrux_RCR[] = {
  1885.     {I_RCR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\203", IF_8086},
  1886.     {I_RCR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\203", IF_8086},
  1887.     {I_RCR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\203\25", IF_286|IF_SB},
  1888.     {I_RCR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\203", IF_8086},
  1889.     {I_RCR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\203", IF_8086},
  1890.     {I_RCR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\203\25", IF_286|IF_SB},
  1891.     {I_RCR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\203", IF_386},
  1892.     {I_RCR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\203", IF_386},
  1893.     {I_RCR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\203\25", IF_386|IF_SB},
  1894.     {-1}
  1895. };
  1896.  
  1897. static struct itemplate instrux_RDMSR[] = {
  1898.     {I_RDMSR, 0, {0,0,0}, "\2\x0F\x32", IF_PENT},
  1899.     {-1}
  1900. };
  1901.  
  1902. static struct itemplate instrux_RDPMC[] = {
  1903.     {I_RDPMC, 0, {0,0,0}, "\2\x0F\x33", IF_P6},
  1904.     {-1}
  1905. };
  1906.  
  1907. static struct itemplate instrux_RDTSC[] = {
  1908.     {I_RDTSC, 0, {0,0,0}, "\2\x0F\x31", IF_PENT},
  1909.     {-1}
  1910. };
  1911.  
  1912. static struct itemplate instrux_RESB[] = {
  1913.     {I_RESB, 1, {IMMEDIATE,0,0}, "\340", IF_8086},
  1914.     {-1}
  1915. };
  1916.  
  1917. static struct itemplate instrux_RESD[] = {
  1918.     {-1}
  1919. };
  1920.  
  1921. static struct itemplate instrux_RESQ[] = {
  1922.     {-1}
  1923. };
  1924.  
  1925. static struct itemplate instrux_REST[] = {
  1926.     {-1}
  1927. };
  1928.  
  1929. static struct itemplate instrux_RESW[] = {
  1930.     {-1}
  1931. };
  1932.  
  1933. static struct itemplate instrux_RET[] = {
  1934.     {I_RET, 0, {0,0,0}, "\1\xC3", IF_8086},
  1935.     {I_RET, 1, {IMMEDIATE,0,0}, "\1\xC2\30", IF_8086},
  1936.     {-1}
  1937. };
  1938.  
  1939. static struct itemplate instrux_RETF[] = {
  1940.     {I_RETF, 0, {0,0,0}, "\1\xCB", IF_8086},
  1941.     {I_RETF, 1, {IMMEDIATE,0,0}, "\1\xCA\30", IF_8086},
  1942.     {-1}
  1943. };
  1944.  
  1945. static struct itemplate instrux_RETN[] = {
  1946.     {I_RETN, 0, {0,0,0}, "\1\xC3", IF_8086},
  1947.     {I_RETN, 1, {IMMEDIATE,0,0}, "\1\xC2\30", IF_8086},
  1948.     {-1}
  1949. };
  1950.  
  1951. static struct itemplate instrux_ROL[] = {
  1952.     {I_ROL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\200", IF_8086},
  1953.     {I_ROL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\200", IF_8086},
  1954.     {I_ROL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\200\25", IF_286|IF_SB},
  1955.     {I_ROL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\200", IF_8086},
  1956.     {I_ROL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\200", IF_8086},
  1957.     {I_ROL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\200\25", IF_286|IF_SB},
  1958.     {I_ROL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\200", IF_386},
  1959.     {I_ROL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\200", IF_386},
  1960.     {I_ROL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\200\25", IF_386|IF_SB},
  1961.     {-1}
  1962. };
  1963.  
  1964. static struct itemplate instrux_ROR[] = {
  1965.     {I_ROR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\201", IF_8086},
  1966.     {I_ROR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\201", IF_8086},
  1967.     {I_ROR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\201\25", IF_286|IF_SB},
  1968.     {I_ROR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\201", IF_8086},
  1969.     {I_ROR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\201", IF_8086},
  1970.     {I_ROR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\201\25", IF_286|IF_SB},
  1971.     {I_ROR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\201", IF_386},
  1972.     {I_ROR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\201", IF_386},
  1973.     {I_ROR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\201\25", IF_386|IF_SB},
  1974.     {-1}
  1975. };
  1976.  
  1977. static struct itemplate instrux_RSM[] = {
  1978.     {I_RSM, 0, {0,0,0}, "\2\x0F\xAA", IF_PENT},
  1979.     {-1}
  1980. };
  1981.  
  1982. static struct itemplate instrux_SAHF[] = {
  1983.     {I_SAHF, 0, {0,0,0}, "\1\x9E", IF_8086},
  1984.     {-1}
  1985. };
  1986.  
  1987. static struct itemplate instrux_SAL[] = {
  1988.     {I_SAL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\204", IF_8086},
  1989.     {I_SAL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\204", IF_8086},
  1990.     {I_SAL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\204\25", IF_286|IF_SB},
  1991.     {I_SAL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\204", IF_8086},
  1992.     {I_SAL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\204", IF_8086},
  1993.     {I_SAL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\204\25", IF_286|IF_SB},
  1994.     {I_SAL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\204", IF_386},
  1995.     {I_SAL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\204", IF_386},
  1996.     {I_SAL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\204\25", IF_386|IF_SB},
  1997.     {-1}
  1998. };
  1999.  
  2000. static struct itemplate instrux_SALC[] = {
  2001.     {I_SALC, 0, {0,0,0}, "\1\xD6", IF_8086|IF_UNDOC},
  2002.     {-1}
  2003. };
  2004.  
  2005. static struct itemplate instrux_SAR[] = {
  2006.     {I_SAR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\207", IF_8086},
  2007.     {I_SAR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\207", IF_8086},
  2008.     {I_SAR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\207\25", IF_286|IF_SB},
  2009.     {I_SAR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\207", IF_8086},
  2010.     {I_SAR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\207", IF_8086},
  2011.     {I_SAR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\207\25", IF_286|IF_SB},
  2012.     {I_SAR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\207", IF_386},
  2013.     {I_SAR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\207", IF_386},
  2014.     {I_SAR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\207\25", IF_386|IF_SB},
  2015.     {-1}
  2016. };
  2017.  
  2018. static struct itemplate instrux_SBB[] = {
  2019.     {I_SBB, 2, {MEMORY,REG8,0}, "\300\1\x18\101", IF_8086|IF_SM},
  2020.     {I_SBB, 2, {REG8,REG8,0}, "\300\1\x18\101", IF_8086},
  2021.     {I_SBB, 2, {MEMORY,REG16,0}, "\320\300\1\x19\101", IF_8086|IF_SM},
  2022.     {I_SBB, 2, {REG16,REG16,0}, "\320\300\1\x19\101", IF_8086},
  2023.     {I_SBB, 2, {MEMORY,REG32,0}, "\321\300\1\x19\101", IF_386|IF_SM},
  2024.     {I_SBB, 2, {REG32,REG32,0}, "\321\300\1\x19\101", IF_386},
  2025.     {I_SBB, 2, {REG8,MEMORY,0}, "\301\1\x1A\110", IF_8086|IF_SM},
  2026.     {I_SBB, 2, {REG8,REG8,0}, "\301\1\x1A\110", IF_8086},
  2027.     {I_SBB, 2, {REG16,MEMORY,0}, "\320\301\1\x1B\110", IF_8086|IF_SM},
  2028.     {I_SBB, 2, {REG16,REG16,0}, "\320\301\1\x1B\110", IF_8086},
  2029.     {I_SBB, 2, {REG32,MEMORY,0}, "\321\301\1\x1B\110", IF_386|IF_SM},
  2030.     {I_SBB, 2, {REG32,REG32,0}, "\321\301\1\x1B\110", IF_386},
  2031.     {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\203\15", IF_8086},
  2032.     {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\203\15", IF_8086},
  2033.     {I_SBB, 2, {REG_AL,IMMEDIATE,0}, "\1\x1C\21", IF_8086|IF_SM},
  2034.     {I_SBB, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x1D\31", IF_8086|IF_SM},
  2035.     {I_SBB, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x1D\41", IF_386|IF_SM},
  2036.     {I_SBB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\203\21", IF_8086|IF_SM},
  2037.     {I_SBB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\203\31", IF_8086|IF_SM},
  2038.     {I_SBB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\203\41", IF_386|IF_SM},
  2039.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\203\21", IF_8086|IF_SM},
  2040.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\203\31", IF_8086|IF_SM},
  2041.     {I_SBB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\203\41", IF_386|IF_SM},
  2042.     {-1}
  2043. };
  2044.  
  2045. static struct itemplate instrux_SCASB[] = {
  2046.     {I_SCASB, 0, {0,0,0}, "\1\xAE", IF_8086},
  2047.     {-1}
  2048. };
  2049.  
  2050. static struct itemplate instrux_SCASD[] = {
  2051.     {I_SCASD, 0, {0,0,0}, "\321\1\xAF", IF_386},
  2052.     {-1}
  2053. };
  2054.  
  2055. static struct itemplate instrux_SCASW[] = {
  2056.     {I_SCASW, 0, {0,0,0}, "\320\1\xAF", IF_8086},
  2057.     {-1}
  2058. };
  2059.  
  2060. static struct itemplate instrux_SGDT[] = {
  2061.     {I_SGDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\200", IF_286|IF_PRIV},
  2062.     {-1}
  2063. };
  2064.  
  2065. static struct itemplate instrux_SHL[] = {
  2066.     {I_SHL, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\204", IF_8086},
  2067.     {I_SHL, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\204", IF_8086},
  2068.     {I_SHL, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\204\25", IF_286|IF_SB},
  2069.     {I_SHL, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\204", IF_8086},
  2070.     {I_SHL, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\204", IF_8086},
  2071.     {I_SHL, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\204\25", IF_286|IF_SB},
  2072.     {I_SHL, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\204", IF_386},
  2073.     {I_SHL, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\204", IF_386},
  2074.     {I_SHL, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\204\25", IF_386|IF_SB},
  2075.     {-1}
  2076. };
  2077.  
  2078. static struct itemplate instrux_SHLD[] = {
  2079.     {I_SHLD, 3, {MEMORY,REG16,IMMEDIATE}, "\300\320\2\x0F\xA4\101\26", IF_386|IF_SM2},
  2080.     {I_SHLD, 3, {REG16,REG16,IMMEDIATE}, "\300\320\2\x0F\xA4\101\26", IF_386|IF_SM2},
  2081.     {I_SHLD, 3, {MEMORY,REG32,IMMEDIATE}, "\300\321\2\x0F\xA4\101\26", IF_386|IF_SM2},
  2082.     {I_SHLD, 3, {REG32,REG32,IMMEDIATE}, "\300\321\2\x0F\xA4\101\26", IF_386|IF_SM2},
  2083.     {I_SHLD, 3, {MEMORY,REG16,REG_CL}, "\300\320\2\x0F\xA5\101", IF_386|IF_SM},
  2084.     {I_SHLD, 3, {REG16,REG16,REG_CL}, "\300\320\2\x0F\xA5\101", IF_386},
  2085.     {I_SHLD, 3, {MEMORY,REG32,REG_CL}, "\300\321\2\x0F\xA5\101", IF_386|IF_SM},
  2086.     {I_SHLD, 3, {REG32,REG32,REG_CL}, "\300\321\2\x0F\xA5\101", IF_386},
  2087.     {-1}
  2088. };
  2089.  
  2090. static struct itemplate instrux_SHR[] = {
  2091.     {I_SHR, 2, {REGMEM|BITS8,UNITY,0}, "\300\1\xD0\205", IF_8086},
  2092.     {I_SHR, 2, {REGMEM|BITS8,REG_CL,0}, "\300\1\xD2\205", IF_8086},
  2093.     {I_SHR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xC0\205\25", IF_286|IF_SB},
  2094.     {I_SHR, 2, {REGMEM|BITS16,UNITY,0}, "\320\300\1\xD1\205", IF_8086},
  2095.     {I_SHR, 2, {REGMEM|BITS16,REG_CL,0}, "\320\300\1\xD3\205", IF_8086},
  2096.     {I_SHR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xC1\205\25", IF_286|IF_SB},
  2097.     {I_SHR, 2, {REGMEM|BITS32,UNITY,0}, "\321\300\1\xD1\205", IF_386},
  2098.     {I_SHR, 2, {REGMEM|BITS32,REG_CL,0}, "\321\300\1\xD3\205", IF_386},
  2099.     {I_SHR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xC1\205\25", IF_386|IF_SB},
  2100.     {-1}
  2101. };
  2102.  
  2103. static struct itemplate instrux_SHRD[] = {
  2104.     {I_SHRD, 3, {MEMORY,REG16,IMMEDIATE}, "\300\320\2\x0F\xAC\101\26", IF_386|IF_SM2},
  2105.     {I_SHRD, 3, {REG16,REG16,IMMEDIATE}, "\300\320\2\x0F\xAC\101\26", IF_386|IF_SM2},
  2106.     {I_SHRD, 3, {MEMORY,REG32,IMMEDIATE}, "\300\321\2\x0F\xAC\101\26", IF_386|IF_SM2},
  2107.     {I_SHRD, 3, {REG32,REG32,IMMEDIATE}, "\300\321\2\x0F\xAC\101\26", IF_386|IF_SM2},
  2108.     {I_SHRD, 3, {MEMORY,REG16,REG_CL}, "\300\320\2\x0F\xAD\101", IF_386|IF_SM},
  2109.     {I_SHRD, 3, {REG16,REG16,REG_CL}, "\300\320\2\x0F\xAD\101", IF_386},
  2110.     {I_SHRD, 3, {MEMORY,REG32,REG_CL}, "\300\321\2\x0F\xAD\101", IF_386|IF_SM},
  2111.     {I_SHRD, 3, {REG32,REG32,REG_CL}, "\300\321\2\x0F\xAD\101", IF_386},
  2112.     {-1}
  2113. };
  2114.  
  2115. static struct itemplate instrux_SIDT[] = {
  2116.     {I_SIDT, 1, {MEMORY,0,0}, "\300\2\x0F\x01\201", IF_286|IF_PRIV},
  2117.     {-1}
  2118. };
  2119.  
  2120. static struct itemplate instrux_SLDT[] = {
  2121.     {I_SLDT, 1, {MEMORY,0,0}, "\300\1\x0F\17\200", IF_286|IF_PRIV},
  2122.     {I_SLDT, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\200", IF_286|IF_PRIV},
  2123.     {I_SLDT, 1, {REG16,0,0}, "\300\1\x0F\17\200", IF_286|IF_PRIV},
  2124.     {-1}
  2125. };
  2126.  
  2127. static struct itemplate instrux_SMI[] = {
  2128.     {I_SMI, 0, {0,0,0}, "\1\xF1", IF_386|IF_UNDOC},
  2129.     {-1}
  2130. };
  2131.  
  2132. static struct itemplate instrux_SMSW[] = {
  2133.     {I_SMSW, 1, {MEMORY,0,0}, "\300\2\x0F\x01\204", IF_286|IF_PRIV},
  2134.     {I_SMSW, 1, {MEMORY|BITS16,0,0}, "\300\2\x0F\x01\204", IF_286|IF_PRIV},
  2135.     {I_SMSW, 1, {REG16,0,0}, "\300\2\x0F\x01\204", IF_286|IF_PRIV},
  2136.     {-1}
  2137. };
  2138.  
  2139. static struct itemplate instrux_STC[] = {
  2140.     {I_STC, 0, {0,0,0}, "\1\xF9", IF_8086},
  2141.     {-1}
  2142. };
  2143.  
  2144. static struct itemplate instrux_STD[] = {
  2145.     {I_STD, 0, {0,0,0}, "\1\xFD", IF_8086},
  2146.     {-1}
  2147. };
  2148.  
  2149. static struct itemplate instrux_STI[] = {
  2150.     {I_STI, 0, {0,0,0}, "\1\xFB", IF_8086},
  2151.     {-1}
  2152. };
  2153.  
  2154. static struct itemplate instrux_STOSB[] = {
  2155.     {I_STOSB, 0, {0,0,0}, "\1\xAA", IF_8086},
  2156.     {-1}
  2157. };
  2158.  
  2159. static struct itemplate instrux_STOSD[] = {
  2160.     {I_STOSD, 0, {0,0,0}, "\321\1\xAB", IF_386},
  2161.     {-1}
  2162. };
  2163.  
  2164. static struct itemplate instrux_STOSW[] = {
  2165.     {I_STOSW, 0, {0,0,0}, "\320\1\xAB", IF_8086},
  2166.     {-1}
  2167. };
  2168.  
  2169. static struct itemplate instrux_STR[] = {
  2170.     {I_STR, 1, {MEMORY,0,0}, "\300\1\x0F\17\201", IF_286|IF_PRIV},
  2171.     {I_STR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\201", IF_286|IF_PRIV},
  2172.     {I_STR, 1, {REG16,0,0}, "\300\1\x0F\17\201", IF_286|IF_PRIV},
  2173.     {-1}
  2174. };
  2175.  
  2176. static struct itemplate instrux_SUB[] = {
  2177.     {I_SUB, 2, {MEMORY,REG8,0}, "\300\1\x28\101", IF_8086|IF_SM},
  2178.     {I_SUB, 2, {REG8,REG8,0}, "\300\1\x28\101", IF_8086},
  2179.     {I_SUB, 2, {MEMORY,REG16,0}, "\320\300\1\x29\101", IF_8086|IF_SM},
  2180.     {I_SUB, 2, {REG16,REG16,0}, "\320\300\1\x29\101", IF_8086},
  2181.     {I_SUB, 2, {MEMORY,REG32,0}, "\321\300\1\x29\101", IF_386|IF_SM},
  2182.     {I_SUB, 2, {REG32,REG32,0}, "\321\300\1\x29\101", IF_386},
  2183.     {I_SUB, 2, {REG8,MEMORY,0}, "\301\1\x2A\110", IF_8086|IF_SM},
  2184.     {I_SUB, 2, {REG8,REG8,0}, "\301\1\x2A\110", IF_8086},
  2185.     {I_SUB, 2, {REG16,MEMORY,0}, "\320\301\1\x2B\110", IF_8086|IF_SM},
  2186.     {I_SUB, 2, {REG16,REG16,0}, "\320\301\1\x2B\110", IF_8086},
  2187.     {I_SUB, 2, {REG32,MEMORY,0}, "\321\301\1\x2B\110", IF_386|IF_SM},
  2188.     {I_SUB, 2, {REG32,REG32,0}, "\321\301\1\x2B\110", IF_386},
  2189.     {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\205\15", IF_8086},
  2190.     {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\205\15", IF_386},
  2191.     {I_SUB, 2, {REG_AL,IMMEDIATE,0}, "\1\x2C\21", IF_8086|IF_SM},
  2192.     {I_SUB, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x2D\31", IF_8086|IF_SM},
  2193.     {I_SUB, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x2D\41", IF_386|IF_SM},
  2194.     {I_SUB, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\205\21", IF_8086|IF_SM},
  2195.     {I_SUB, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\205\31", IF_8086|IF_SM},
  2196.     {I_SUB, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\205\41", IF_386|IF_SM},
  2197.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\205\21", IF_8086|IF_SM},
  2198.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\205\31", IF_8086|IF_SM},
  2199.     {I_SUB, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\205\41", IF_386|IF_SM},
  2200.     {-1}
  2201. };
  2202.  
  2203. static struct itemplate instrux_TEST[] = {
  2204.     {I_TEST, 2, {MEMORY,REG8,0}, "\300\1\x84\101", IF_8086|IF_SM},
  2205.     {I_TEST, 2, {REG8,REG8,0}, "\300\1\x84\101", IF_8086},
  2206.     {I_TEST, 2, {MEMORY,REG16,0}, "\320\300\1\x85\101", IF_8086|IF_SM},
  2207.     {I_TEST, 2, {REG16,REG16,0}, "\320\300\1\x85\101", IF_8086},
  2208.     {I_TEST, 2, {MEMORY,REG32,0}, "\321\300\1\x85\101", IF_386|IF_SM},
  2209.     {I_TEST, 2, {REG32,REG32,0}, "\321\300\1\x85\101", IF_386},
  2210.     {I_TEST, 2, {REG_AL,IMMEDIATE,0}, "\1\xA8\21", IF_8086|IF_SM},
  2211.     {I_TEST, 2, {REG_AX,IMMEDIATE,0}, "\320\1\xA9\31", IF_8086|IF_SM},
  2212.     {I_TEST, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\xA9\41", IF_386|IF_SM},
  2213.     {I_TEST, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\xF6\200\21", IF_8086|IF_SM},
  2214.     {I_TEST, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\xF7\200\31", IF_8086|IF_SM},
  2215.     {I_TEST, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\xF7\200\41", IF_386|IF_SM},
  2216.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\xF6\200\21", IF_8086|IF_SM},
  2217.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\xF7\200\31", IF_8086|IF_SM},
  2218.     {I_TEST, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\xF7\200\41", IF_386|IF_SM},
  2219.     {-1}
  2220. };
  2221.  
  2222. static struct itemplate instrux_UMOV[] = {
  2223.     {I_UMOV, 2, {MEMORY,REG8,0}, "\300\2\x0F\x10\101", IF_386|IF_UNDOC|IF_SM},
  2224.     {I_UMOV, 2, {REG8,REG8,0}, "\300\2\x0F\x10\101", IF_386|IF_UNDOC},
  2225.     {I_UMOV, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\x11\101", IF_386|IF_UNDOC|IF_SM},
  2226.     {I_UMOV, 2, {REG16,REG16,0}, "\320\300\2\x0F\x11\101", IF_386|IF_UNDOC},
  2227.     {I_UMOV, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\x11\101", IF_386|IF_UNDOC|IF_SM},
  2228.     {I_UMOV, 2, {REG32,REG32,0}, "\321\300\2\x0F\x11\101", IF_386|IF_UNDOC},
  2229.     {I_UMOV, 2, {REG8,MEMORY,0}, "\301\2\x0F\x12\110", IF_386|IF_UNDOC|IF_SM},
  2230.     {I_UMOV, 2, {REG8,REG8,0}, "\301\2\x0F\x12\110", IF_386|IF_UNDOC},
  2231.     {I_UMOV, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\x13\110", IF_386|IF_UNDOC|IF_SM},
  2232.     {I_UMOV, 2, {REG16,REG16,0}, "\320\301\2\x0F\x13\110", IF_386|IF_UNDOC},
  2233.     {I_UMOV, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\x13\110", IF_386|IF_UNDOC|IF_SM},
  2234.     {I_UMOV, 2, {REG32,REG32,0}, "\321\301\2\x0F\x13\110", IF_386|IF_UNDOC},
  2235.     {-1}
  2236. };
  2237.  
  2238. static struct itemplate instrux_VERR[] = {
  2239.     {I_VERR, 1, {MEMORY,0,0}, "\300\1\x0F\17\204", IF_286|IF_PRIV},
  2240.     {I_VERR, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\204", IF_286|IF_PRIV},
  2241.     {I_VERR, 1, {REG16,0,0}, "\300\1\x0F\17\204", IF_286|IF_PRIV},
  2242.     {-1}
  2243. };
  2244.  
  2245. static struct itemplate instrux_VERW[] = {
  2246.     {I_VERW, 1, {MEMORY,0,0}, "\300\1\x0F\17\205", IF_286|IF_PRIV},
  2247.     {I_VERW, 1, {MEMORY|BITS16,0,0}, "\300\1\x0F\17\205", IF_286|IF_PRIV},
  2248.     {I_VERW, 1, {REG16,0,0}, "\300\1\x0F\17\205", IF_286|IF_PRIV},
  2249.     {-1}
  2250. };
  2251.  
  2252. static struct itemplate instrux_WAIT[] = {
  2253.     {I_WAIT, 0, {0,0,0}, "\1\x9B", IF_8086},
  2254.     {-1}
  2255. };
  2256.  
  2257. static struct itemplate instrux_WBINVD[] = {
  2258.     {I_WBINVD, 0, {0,0,0}, "\2\x0F\x09", IF_486},
  2259.     {-1}
  2260. };
  2261.  
  2262. static struct itemplate instrux_WRMSR[] = {
  2263.     {I_WRMSR, 0, {0,0,0}, "\2\x0F\x30", IF_PENT},
  2264.     {-1}
  2265. };
  2266.  
  2267. static struct itemplate instrux_XADD[] = {
  2268.     {I_XADD, 2, {MEMORY,REG8,0}, "\300\2\x0F\xC0\101", IF_486|IF_SM},
  2269.     {I_XADD, 2, {REG8,REG8,0}, "\300\2\x0F\xC0\101", IF_486},
  2270.     {I_XADD, 2, {MEMORY,REG16,0}, "\320\300\2\x0F\xC1\101", IF_486|IF_SM},
  2271.     {I_XADD, 2, {REG16,REG16,0}, "\320\300\2\x0F\xC1\101", IF_486},
  2272.     {I_XADD, 2, {MEMORY,REG32,0}, "\321\300\2\x0F\xC1\101", IF_486|IF_SM},
  2273.     {I_XADD, 2, {REG32,REG32,0}, "\321\300\2\x0F\xC1\101", IF_486},
  2274.     {-1}
  2275. };
  2276.  
  2277. static struct itemplate instrux_XBTS[] = {
  2278.     {I_XBTS, 2, {REG16,MEMORY,0}, "\320\301\2\x0F\xA6\110", IF_386|IF_SW|IF_UNDOC},
  2279.     {I_XBTS, 2, {REG16,REG16,0}, "\320\301\2\x0F\xA6\110", IF_386|IF_UNDOC},
  2280.     {I_XBTS, 2, {REG32,MEMORY,0}, "\321\301\2\x0F\xA6\110", IF_386|IF_SD|IF_UNDOC},
  2281.     {I_XBTS, 2, {REG32,REG32,0}, "\321\301\2\x0F\xA6\110", IF_386|IF_UNDOC},
  2282.     {-1}
  2283. };
  2284.  
  2285. static struct itemplate instrux_XCHG[] = {
  2286.     {I_XCHG, 2, {REG_AX,REG16,0}, "\320\11\x90", IF_8086},
  2287.     {I_XCHG, 2, {REG_EAX,REG32,0}, "\321\11\x90", IF_386},
  2288.     {I_XCHG, 2, {REG16,REG_AX,0}, "\320\10\x90", IF_8086},
  2289.     {I_XCHG, 2, {REG32,REG_EAX,0}, "\321\10\x90", IF_386},
  2290.     {I_XCHG, 2, {REG8,MEMORY,0}, "\301\1\x86\110", IF_8086|IF_SM},
  2291.     {I_XCHG, 2, {REG8,REG8,0}, "\301\1\x86\110", IF_8086},
  2292.     {I_XCHG, 2, {REG16,MEMORY,0}, "\320\301\1\x87\110", IF_8086|IF_SM},
  2293.     {I_XCHG, 2, {REG16,REG16,0}, "\320\301\1\x87\110", IF_8086},
  2294.     {I_XCHG, 2, {REG32,MEMORY,0}, "\321\301\1\x87\110", IF_386|IF_SM},
  2295.     {I_XCHG, 2, {REG32,REG32,0}, "\321\301\1\x87\110", IF_386},
  2296.     {I_XCHG, 2, {MEMORY,REG8,0}, "\300\1\x86\101", IF_8086|IF_SM},
  2297.     {I_XCHG, 2, {REG8,REG8,0}, "\300\1\x86\101", IF_8086},
  2298.     {I_XCHG, 2, {MEMORY,REG16,0}, "\320\300\1\x87\101", IF_8086|IF_SM},
  2299.     {I_XCHG, 2, {REG16,REG16,0}, "\320\300\1\x87\101", IF_8086},
  2300.     {I_XCHG, 2, {MEMORY,REG32,0}, "\321\300\1\x87\101", IF_386|IF_SM},
  2301.     {I_XCHG, 2, {REG32,REG32,0}, "\321\300\1\x87\101", IF_386},
  2302.     {-1}
  2303. };
  2304.  
  2305. static struct itemplate instrux_XLATB[] = {
  2306.     {I_XLATB, 0, {0,0,0}, "\1\xD7", IF_8086},
  2307.     {-1}
  2308. };
  2309.  
  2310. static struct itemplate instrux_XOR[] = {
  2311.     {I_XOR, 2, {MEMORY,REG8,0}, "\300\1\x30\101", IF_8086|IF_SM},
  2312.     {I_XOR, 2, {REG8,REG8,0}, "\300\1\x30\101", IF_8086},
  2313.     {I_XOR, 2, {MEMORY,REG16,0}, "\320\300\1\x31\101", IF_8086|IF_SM},
  2314.     {I_XOR, 2, {REG16,REG16,0}, "\320\300\1\x31\101", IF_8086},
  2315.     {I_XOR, 2, {MEMORY,REG32,0}, "\321\300\1\x31\101", IF_386|IF_SM},
  2316.     {I_XOR, 2, {REG32,REG32,0}, "\321\300\1\x31\101", IF_386},
  2317.     {I_XOR, 2, {REG8,MEMORY,0}, "\301\1\x32\110", IF_8086|IF_SM},
  2318.     {I_XOR, 2, {REG8,REG8,0}, "\301\1\x32\110", IF_8086},
  2319.     {I_XOR, 2, {REG16,MEMORY,0}, "\320\301\1\x33\110", IF_8086|IF_SM},
  2320.     {I_XOR, 2, {REG16,REG16,0}, "\320\301\1\x33\110", IF_8086},
  2321.     {I_XOR, 2, {REG32,MEMORY,0}, "\321\301\1\x33\110", IF_386|IF_SM},
  2322.     {I_XOR, 2, {REG32,REG32,0}, "\321\301\1\x33\110", IF_386},
  2323.     {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE|BITS8,0}, "\320\300\1\x83\206\15", IF_8086},
  2324.     {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE|BITS8,0}, "\321\300\1\x83\206\15", IF_386},
  2325.     {I_XOR, 2, {REG_AL,IMMEDIATE,0}, "\1\x34\21", IF_8086|IF_SM},
  2326.     {I_XOR, 2, {REG_AX,IMMEDIATE,0}, "\320\1\x35\31", IF_8086|IF_SM},
  2327.     {I_XOR, 2, {REG_EAX,IMMEDIATE,0}, "\321\1\x35\41", IF_386|IF_SM},
  2328.     {I_XOR, 2, {REGMEM|BITS8,IMMEDIATE,0}, "\300\1\x80\206\21", IF_8086|IF_SM},
  2329.     {I_XOR, 2, {REGMEM|BITS16,IMMEDIATE,0}, "\320\300\1\x81\206\31", IF_8086|IF_SM},
  2330.     {I_XOR, 2, {REGMEM|BITS32,IMMEDIATE,0}, "\321\300\1\x81\206\41", IF_386|IF_SM},
  2331.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS8,0}, "\300\1\x80\206\21", IF_8086|IF_SM},
  2332.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS16,0}, "\320\300\1\x81\206\31", IF_8086|IF_SM},
  2333.     {I_XOR, 2, {MEMORY,IMMEDIATE|BITS32,0}, "\321\300\1\x81\206\41", IF_386|IF_SM},
  2334.     {-1}
  2335. };
  2336.  
  2337. static struct itemplate instrux_CMOVcc[] = {
  2338.     {I_CMOVcc, 2, {REG16,MEMORY,0}, "\320\301\1\x0F\330\x40\110", IF_P6|IF_SM},
  2339.     {I_CMOVcc, 2, {REG16,REG16,0}, "\320\301\1\x0F\330\x40\110", IF_P6},
  2340.     {I_CMOVcc, 2, {REG32,MEMORY,0}, "\321\301\1\x0F\330\x40\110", IF_P6|IF_SM},
  2341.     {I_CMOVcc, 2, {REG32,REG32,0}, "\321\301\1\x0F\330\x40\110", IF_P6},
  2342.     {-1}
  2343. };
  2344.  
  2345. static struct itemplate instrux_Jcc[] = {
  2346.     {I_Jcc, 1, {IMMEDIATE|NEAR,0,0}, "\322\1\x0F\330\x80\64", IF_386},
  2347.     {I_Jcc, 1, {IMMEDIATE,0,0}, "\330\x70\50", IF_8086},
  2348.     {I_Jcc, 1, {IMMEDIATE|SHORT,0,0}, "\330\x70\50", IF_8086},
  2349.     {-1}
  2350. };
  2351.  
  2352. static struct itemplate instrux_SETcc[] = {
  2353.     {I_SETcc, 1, {MEMORY,0,0}, "\300\1\x0F\330\x90\200", IF_386|IF_SB},
  2354.     {I_SETcc, 1, {REG8,0,0}, "\300\1\x0F\330\x90\200", IF_386},
  2355.     {-1}
  2356. };
  2357.  
  2358. struct itemplate *nasm_instructions[] = {
  2359.     instrux_AAA,
  2360.     instrux_AAD,
  2361.     instrux_AAM,
  2362.     instrux_AAS,
  2363.     instrux_ADC,
  2364.     instrux_ADD,
  2365.     instrux_AND,
  2366.     instrux_ARPL,
  2367.     instrux_BOUND,
  2368.     instrux_BSF,
  2369.     instrux_BSR,
  2370.     instrux_BSWAP,
  2371.     instrux_BT,
  2372.     instrux_BTC,
  2373.     instrux_BTR,
  2374.     instrux_BTS,
  2375.     instrux_CALL,
  2376.     instrux_CBW,
  2377.     instrux_CDQ,
  2378.     instrux_CLC,
  2379.     instrux_CLD,
  2380.     instrux_CLI,
  2381.     instrux_CLTS,
  2382.     instrux_CMC,
  2383.     instrux_CMP,
  2384.     instrux_CMPSB,
  2385.     instrux_CMPSD,
  2386.     instrux_CMPSW,
  2387.     instrux_CMPXCHG,
  2388.     instrux_CMPXCHG486,
  2389.     instrux_CMPXCHG8B,
  2390.     instrux_CPUID,
  2391.     instrux_CWD,
  2392.     instrux_CWDE,
  2393.     instrux_DAA,
  2394.     instrux_DAS,
  2395.     instrux_DB,
  2396.     instrux_DD,
  2397.     instrux_DEC,
  2398.     instrux_DIV,
  2399.     instrux_DQ,
  2400.     instrux_DT,
  2401.     instrux_DW,
  2402.     instrux_EMMS,
  2403.     instrux_ENTER,
  2404.     instrux_EQU,
  2405.     instrux_F2XM1,
  2406.     instrux_FABS,
  2407.     instrux_FADD,
  2408.     instrux_FADDP,
  2409.     instrux_FBLD,
  2410.     instrux_FBSTP,
  2411.     instrux_FCHS,
  2412.     instrux_FCLEX,
  2413.     instrux_FCMOVB,
  2414.     instrux_FCMOVBE,
  2415.     instrux_FCMOVE,
  2416.     instrux_FCMOVNB,
  2417.     instrux_FCMOVNBE,
  2418.     instrux_FCMOVNE,
  2419.     instrux_FCMOVNU,
  2420.     instrux_FCMOVU,
  2421.     instrux_FCOM,
  2422.     instrux_FCOMI,
  2423.     instrux_FCOMIP,
  2424.     instrux_FCOMP,
  2425.     instrux_FCOMPP,
  2426.     instrux_FCOS,
  2427.     instrux_FDECSTP,
  2428.     instrux_FDISI,
  2429.     instrux_FDIV,
  2430.     instrux_FDIVP,
  2431.     instrux_FDIVR,
  2432.     instrux_FDIVRP,
  2433.     instrux_FENI,
  2434.     instrux_FFREE,
  2435.     instrux_FIADD,
  2436.     instrux_FICOM,
  2437.     instrux_FICOMP,
  2438.     instrux_FIDIV,
  2439.     instrux_FIDIVR,
  2440.     instrux_FILD,
  2441.     instrux_FIMUL,
  2442.     instrux_FINCSTP,
  2443.     instrux_FINIT,
  2444.     instrux_FIST,
  2445.     instrux_FISTP,
  2446.     instrux_FISUB,
  2447.     instrux_FISUBR,
  2448.     instrux_FLD,
  2449.     instrux_FLD1,
  2450.     instrux_FLDCW,
  2451.     instrux_FLDENV,
  2452.     instrux_FLDL2E,
  2453.     instrux_FLDL2T,
  2454.     instrux_FLDLG2,
  2455.     instrux_FLDLN2,
  2456.     instrux_FLDPI,
  2457.     instrux_FLDZ,
  2458.     instrux_FMUL,
  2459.     instrux_FMULP,
  2460.     instrux_FNCLEX,
  2461.     instrux_FNDISI,
  2462.     instrux_FNENI,
  2463.     instrux_FNINIT,
  2464.     instrux_FNOP,
  2465.     instrux_FNSAVE,
  2466.     instrux_FNSTCW,
  2467.     instrux_FNSTENV,
  2468.     instrux_FNSTSW,
  2469.     instrux_FPATAN,
  2470.     instrux_FPREM,
  2471.     instrux_FPREM1,
  2472.     instrux_FPTAN,
  2473.     instrux_FRNDINT,
  2474.     instrux_FRSTOR,
  2475.     instrux_FSAVE,
  2476.     instrux_FSCALE,
  2477.     instrux_FSETPM,
  2478.     instrux_FSIN,
  2479.     instrux_FSINCOS,
  2480.     instrux_FSQRT,
  2481.     instrux_FST,
  2482.     instrux_FSTCW,
  2483.     instrux_FSTENV,
  2484.     instrux_FSTP,
  2485.     instrux_FSTSW,
  2486.     instrux_FSUB,
  2487.     instrux_FSUBP,
  2488.     instrux_FSUBR,
  2489.     instrux_FSUBRP,
  2490.     instrux_FTST,
  2491.     instrux_FUCOM,
  2492.     instrux_FUCOMI,
  2493.     instrux_FUCOMIP,
  2494.     instrux_FUCOMP,
  2495.     instrux_FUCOMPP,
  2496.     instrux_FXAM,
  2497.     instrux_FXCH,
  2498.     instrux_FXTRACT,
  2499.     instrux_FYL2X,
  2500.     instrux_FYL2XP1,
  2501.     instrux_HLT,
  2502.     instrux_IBTS,
  2503.     instrux_ICEBP,
  2504.     instrux_IDIV,
  2505.     instrux_IMUL,
  2506.     instrux_IN,
  2507.     instrux_INC,
  2508.     instrux_INCBIN,
  2509.     instrux_INSB,
  2510.     instrux_INSD,
  2511.     instrux_INSW,
  2512.     instrux_INT,
  2513.     instrux_INT01,
  2514.     instrux_INT1,
  2515.     instrux_INT3,
  2516.     instrux_INTO,
  2517.     instrux_INVD,
  2518.     instrux_INVLPG,
  2519.     instrux_IRET,
  2520.     instrux_IRETD,
  2521.     instrux_IRETW,
  2522.     instrux_JCXZ,
  2523.     instrux_JECXZ,
  2524.     instrux_JMP,
  2525.     instrux_LAHF,
  2526.     instrux_LAR,
  2527.     instrux_LDS,
  2528.     instrux_LEA,
  2529.     instrux_LEAVE,
  2530.     instrux_LES,
  2531.     instrux_LFS,
  2532.     instrux_LGDT,
  2533.     instrux_LGS,
  2534.     instrux_LIDT,
  2535.     instrux_LLDT,
  2536.     instrux_LMSW,
  2537.     instrux_LOADALL,
  2538.     instrux_LOADALL286,
  2539.     instrux_LODSB,
  2540.     instrux_LODSD,
  2541.     instrux_LODSW,
  2542.     instrux_LOOP,
  2543.     instrux_LOOPE,
  2544.     instrux_LOOPNE,
  2545.     instrux_LOOPNZ,
  2546.     instrux_LOOPZ,
  2547.     instrux_LSL,
  2548.     instrux_LSS,
  2549.     instrux_LTR,
  2550.     instrux_MOV,
  2551.     instrux_MOVD,
  2552.     instrux_MOVQ,
  2553.     instrux_MOVSB,
  2554.     instrux_MOVSD,
  2555.     instrux_MOVSW,
  2556.     instrux_MOVSX,
  2557.     instrux_MOVZX,
  2558.     instrux_MUL,
  2559.     instrux_NEG,
  2560.     instrux_NOP,
  2561.     instrux_NOT,
  2562.     instrux_OR,
  2563.     instrux_OUT,
  2564.     instrux_OUTSB,
  2565.     instrux_OUTSD,
  2566.     instrux_OUTSW,
  2567.     instrux_PACKSSDW,
  2568.     instrux_PACKSSWB,
  2569.     instrux_PACKUSWB,
  2570.     instrux_PADDB,
  2571.     instrux_PADDD,
  2572.     instrux_PADDSB,
  2573.     instrux_PADDSIW,
  2574.     instrux_PADDSW,
  2575.     instrux_PADDUSB,
  2576.     instrux_PADDUSW,
  2577.     instrux_PADDW,
  2578.     instrux_PAND,
  2579.     instrux_PANDN,
  2580.     instrux_PAVEB,
  2581.     instrux_PCMPEQB,
  2582.     instrux_PCMPEQD,
  2583.     instrux_PCMPEQW,
  2584.     instrux_PCMPGTB,
  2585.     instrux_PCMPGTD,
  2586.     instrux_PCMPGTW,
  2587.     instrux_PDISTIB,
  2588.     instrux_PMACHRIW,
  2589.     instrux_PMADDWD,
  2590.     instrux_PMAGW,
  2591.     instrux_PMULHRW,
  2592.     instrux_PMULHRIW,
  2593.     instrux_PMULHW,
  2594.     instrux_PMULLW,
  2595.     instrux_PMVGEZB,
  2596.     instrux_PMVLZB,
  2597.     instrux_PMVNZB,
  2598.     instrux_PMVZB,
  2599.     instrux_POP,
  2600.     instrux_POPA,
  2601.     instrux_POPAD,
  2602.     instrux_POPAW,
  2603.     instrux_POPF,
  2604.     instrux_POPFD,
  2605.     instrux_POPFW,
  2606.     instrux_POR,
  2607.     instrux_PSLLD,
  2608.     instrux_PSLLQ,
  2609.     instrux_PSLLW,
  2610.     instrux_PSRAD,
  2611.     instrux_PSRAW,
  2612.     instrux_PSRLD,
  2613.     instrux_PSRLQ,
  2614.     instrux_PSRLW,
  2615.     instrux_PSUBB,
  2616.     instrux_PSUBD,
  2617.     instrux_PSUBSB,
  2618.     instrux_PSUBSIW,
  2619.     instrux_PSUBSW,
  2620.     instrux_PSUBUSB,
  2621.     instrux_PSUBUSW,
  2622.     instrux_PSUBW,
  2623.     instrux_PUNPCKHBW,
  2624.     instrux_PUNPCKHDQ,
  2625.     instrux_PUNPCKHWD,
  2626.     instrux_PUNPCKLBW,
  2627.     instrux_PUNPCKLDQ,
  2628.     instrux_PUNPCKLWD,
  2629.     instrux_PUSH,
  2630.     instrux_PUSHA,
  2631.     instrux_PUSHAD,
  2632.     instrux_PUSHAW,
  2633.     instrux_PUSHF,
  2634.     instrux_PUSHFD,
  2635.     instrux_PUSHFW,
  2636.     instrux_PXOR,
  2637.     instrux_RCL,
  2638.     instrux_RCR,
  2639.     instrux_RDMSR,
  2640.     instrux_RDPMC,
  2641.     instrux_RDTSC,
  2642.     instrux_RESB,
  2643.     instrux_RESD,
  2644.     instrux_RESQ,
  2645.     instrux_REST,
  2646.     instrux_RESW,
  2647.     instrux_RET,
  2648.     instrux_RETF,
  2649.     instrux_RETN,
  2650.     instrux_ROL,
  2651.     instrux_ROR,
  2652.     instrux_RSM,
  2653.     instrux_SAHF,
  2654.     instrux_SAL,
  2655.     instrux_SALC,
  2656.     instrux_SAR,
  2657.     instrux_SBB,
  2658.     instrux_SCASB,
  2659.     instrux_SCASD,
  2660.     instrux_SCASW,
  2661.     instrux_SGDT,
  2662.     instrux_SHL,
  2663.     instrux_SHLD,
  2664.     instrux_SHR,
  2665.     instrux_SHRD,
  2666.     instrux_SIDT,
  2667.     instrux_SLDT,
  2668.     instrux_SMI,
  2669.     instrux_SMSW,
  2670.     instrux_STC,
  2671.     instrux_STD,
  2672.     instrux_STI,
  2673.     instrux_STOSB,
  2674.     instrux_STOSD,
  2675.     instrux_STOSW,
  2676.     instrux_STR,
  2677.     instrux_SUB,
  2678.     instrux_TEST,
  2679.     instrux_UMOV,
  2680.     instrux_VERR,
  2681.     instrux_VERW,
  2682.     instrux_WAIT,
  2683.     instrux_WBINVD,
  2684.     instrux_WRMSR,
  2685.     instrux_XADD,
  2686.     instrux_XBTS,
  2687.     instrux_XCHG,
  2688.     instrux_XLATB,
  2689.     instrux_XOR,
  2690.     instrux_CMOVcc,
  2691.     instrux_Jcc,
  2692.     instrux_SETcc,
  2693. };
  2694.