]> andersk Git - udis86.git/commitdiff
new docbook/xml documentation, updated webpage
authorvivek thampi <vivek5797@users.sourceforge.net>
Mon, 4 May 2009 12:09:06 +0000 (05:09 -0700)
committervivek thampi <vivek5797@users.sourceforge.net>
Mon, 4 May 2009 12:09:06 +0000 (05:09 -0700)
docs/index.html
docs/manual/Makefile.am [new file with mode: 0644]
docs/manual/Makefile.in [new file with mode: 0644]
docs/manual/manual.css [new file with mode: 0644]
docs/manual/manual.xml [new file with mode: 0644]
docs/manual/manual.xsl [new file with mode: 0644]
docs/ss.jpg [deleted file]
docs/udis86.odt [deleted file]
docs/udis86.pdf [deleted file]
docs/x86/optable.xml [new file with mode: 0644]
docs/x86/optable.xsl [new file with mode: 0644]

index bfa41d5007f0b44ddcb2f0ac2884fa9a92053c13..b25d579a9dedacc773aa22d99613f0650bcff1f0 100644 (file)
@@ -1,38 +1,42 @@
 <html>
 <head>
-<title>Udis86 - Disassembler Library for x86 and AMD64 (x86-64)</title>
-<style type="text/css">@import 'style.css';</style>
+    <title>Udis86 - Disassembler Library for x86 and x86-64</title>
+    <style type="text/css">@import 'style.css';</style>
 </head>
 <body>
-<div id="topbar"><h1>Udis86 - Disassembler Library for x86 and AMD64</h1></div>
-
 <div id="wrapper">
-
-<div id="content">
-
-<div>
-  <big>
-  <a href="udis86.pdf">Documentation</a> &middot; 
-  <a href="x86optable.xml">XML Optable</a> &middot;
-  <a href="#help">Help!</a> &middot;
-  <a href="#author">Author</a> &middot;
-  <a href="http://udis86.cvs.sourceforge.net/udis86/ud/CHANGES?view=markup&pathrev=HEAD">Changes</a> &middot;
-  <a href="http://sourceforge.net/projects/udis86">SF Project Page</a>
-  </big>
-</div>
-
-
-<p>Udis86 is an easy-to-use minimalistic disassembler library (<i>libudis86</i>) 
-for the x86 and AMD64 (x86-64) range of instruction set architectures. The primary
-intent of the design and development of udis86 is to aid software development 
-projects that entail binary code analysis.</p>
-
-<div class="box">
-  <big>Latest Release: <a href="http://prdownloads.sourceforge.net/udis86/udis86-1.7.tar.gz?download">udis86-1.7.tar.gz</a></big>
-</div>
-
-<h2>libudis86</h2>
-       <ol>
+ <div id="content">
+
+  <div id="banner">
+    <h1>udis86</h1> 
+    <h2>Disassembler Library for x86 and x86-64</h2>
+  </div>
+
+  <div id="intro">
+    <p>udis86 is an easy-to-use minimalistic disassembler 
+    library (<i>libudis86</i>) for the x86 and x86-64 class 
+    of instruction set architectures. The primary intent of 
+    the design and development of udis86 is to aid software 
+    development projects that entail binary code analysis.</p>
+  </div>
+
+
+  <div id="get-udis86">
+    <h3>Get sources</h3>
+    <p> <big>Latest Release: <a href="http://prdownloads.sourceforge.net/udis86/udis86-1.7.tar.gz?download">udis86-1.7.tar.gz</a></big> </p>
+    udis86 is now maintained using the <a href="http://git-scm.com">git</a>
+    source code control system. The latest, stable code is available as the
+    master branch in the 
+    <a href="https://sourceforge.net/scm/?type=git&group_id=96233">sourceforge project git repository.</a>
+    <pre>git://udis86.git.sourceforge.net/gitroot/udis86</pre>
+    <h3>Get documentation</h3> 
+    Reference manual available in <code>$SRC/docs/manual</code>, 
+    or <a href="manual/manual.html">browse online</a>.
+ </div>
+
+  <div id="features">
+<h3>libudis86</h3>
+       <ul>
        <li>Full support for the <i>x86 and x86-64 (AMD64)</i> range of instruction set
        architectures.</li>
        <li>Full support  for all <i> AMD-V, INTEL-VMX, MMX, SSE, SSE2, SSE3, FPU(x87), and 
@@ -41,44 +45,38 @@ projects that entail binary code analysis.</p>
        <li>Supports instruction meta-data using XML based decode tables.</li>
        <li>Generates output in <i>AT&T</i> or <i>INTEL</i> assembler language syntaxes.</li>
        <li>Supports flexbile input methods: File, Buffer, and Hooks.</li>
-       <li>Thread-safe and Reentrant.</li>
+       <li>Reentrant.</li>
        <li>Clean and very easy-to-use API.</li>
-       </ol>
-
-<h2>udcli</h2>
-
-       A front-end incarnation of this library, udcli is a small command-line tool 
-       for your quick disassembly needs. 
-       <br/>
-       <div style="text-align:center; padding: 1em;">
-       <img src="ss.jpg" style="border: 1px double; padding: 2px;"/>
-       </div>
-
-<a name="help"></a>
-<h2>Help Needed</h2>
-
-       I am looking for developers who can help me with udis86 in the following 
-       areas,
-
-       <ul>
-       <li>Maintenance of the build system (especially for Windows)</li>
-       <li>Maintenance of the x86optable (adding new instructions, meta-data, etc.)</li>
-       <li>Testing udis86</li>
-       <li>Writing extensions for dynamic languages.</li>
        </ul>
+<h3>udcli</h3>
 
-       If you are interested, let me know at vivekATsig9DOTcom.
+       A front-end incarnation of this library, udcli is a small command-line tool 
+       for your quick disassembly needs.
+    <pre>
+$ echo "65 67 89 87 76 65 54 56 78 89 09 00 87" | udcli -32 -x 
+0000000000000000 656789877665    mov [gs:bx+0x6576], eax
+0000000000000000 54              push esp
+0000000000000000 56              push esi
+0000000000000000 7889            js 0x93 
+0000000000000000 0900            or [eax], eax </pre>
+  </div>
 
 <a name="author"></a>
-<h2>Author</h2>
+<h3>Author</h3>
 
-<p>Udis86 is a creation of <a href="http://sig9.com/vivek/">Vivek Mohan</a>.
+<p>Udis86 is a creation of <a href="http://sig9.com/vivek/">Vivek Thampi</a>.
 You can reach me at <i>vivek[at]sig9[dot]com</i>. Please let me know if you are
 using udis86, have ideas for it, or would like to comment on it.</p>
 
+<h3>License</h3>
+
+<p>Udis86 is an open source project, and is distributed under the terms of
+the <a href="http://udis86.git.sourceforge.net/git/gitweb.cgi?p=udis86;a=blob_plain;f=LICENSE;hb=master">BSD License</a>.</p>
+
+<div style="text-align:center"><small>&copy; 2009 Vivek Thampi</small></div>
 
-<div style="text-align:center"><small>&copy; 2006, 2007, 2008 Vivek Mohan</small></div>
 </div>
 </div>
+
 </body>
 </html>
diff --git a/docs/manual/Makefile.am b/docs/manual/Makefile.am
new file mode 100644 (file)
index 0000000..df20cb3
--- /dev/null
@@ -0,0 +1,10 @@
+docdir = ${datadir}/docs/manual
+dist_doc_DATA = manual.html
+
+GENERATED = manual.html
+
+manual.html: manual.xml manual.xsl
+       xsltproc manual.xsl manual.xml > $@
+
+maintainer-clean-local:
+       rm -rf $(GENERATED)
diff --git a/docs/manual/Makefile.in b/docs/manual/Makefile.in
new file mode 100644 (file)
index 0000000..1de68ff
--- /dev/null
@@ -0,0 +1,374 @@
+# Makefile.in generated by automake 1.10.2 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005, 2006, 2007, 2008  Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+subdir = docs/manual
+DIST_COMMON = $(dist_doc_DATA) $(srcdir)/Makefile.am \
+       $(srcdir)/Makefile.in
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/build/m4/libtool.m4 \
+       $(top_srcdir)/build/m4/ltoptions.m4 \
+       $(top_srcdir)/build/m4/ltsugar.m4 \
+       $(top_srcdir)/build/m4/ltversion.m4 \
+       $(top_srcdir)/build/m4/lt~obsolete.m4 \
+       $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+       $(ACLOCAL_M4)
+mkinstalldirs = $(install_sh) -d
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = `echo $$p | sed -e 's|^.*/||'`;
+am__installdirs = "$(DESTDIR)$(docdir)"
+dist_docDATA_INSTALL = $(INSTALL_DATA)
+DATA = $(dist_doc_DATA)
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMTAR = @AMTAR@
+AR = @AR@
+AS = @AS@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+AWK = @AWK@
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+DLLTOOL = @DLLTOOL@
+DSYMUTIL = @DSYMUTIL@
+DUMPBIN = @DUMPBIN@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+FGREP = @FGREP@
+GREP = @GREP@
+INSTALL = @INSTALL@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+LD = @LD@
+LDFLAGS = @LDFLAGS@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LIBTOOL = @LIBTOOL@
+LIPO = @LIPO@
+LN_S = @LN_S@
+LTLIBOBJS = @LTLIBOBJS@
+MAINT = @MAINT@
+MAKEINFO = @MAKEINFO@
+MKDIR_P = @MKDIR_P@
+NM = @NM@
+NMEDIT = @NMEDIT@
+OBJDUMP = @OBJDUMP@
+OBJEXT = @OBJEXT@
+OTOOL = @OTOOL@
+OTOOL64 = @OTOOL64@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+RANLIB = @RANLIB@
+SED = @SED@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+STRIP = @STRIP@
+VERSION = @VERSION@
+abs_builddir = @abs_builddir@
+abs_srcdir = @abs_srcdir@
+abs_top_builddir = @abs_top_builddir@
+abs_top_srcdir = @abs_top_srcdir@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+builddir = @builddir@
+datadir = @datadir@
+datarootdir = @datarootdir@
+docdir = ${datadir}/docs/manual
+dvidir = @dvidir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+htmldir = @htmldir@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localedir = @localedir@
+localstatedir = @localstatedir@
+lt_ECHO = @lt_ECHO@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+pdfdir = @pdfdir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+psdir = @psdir@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+srcdir = @srcdir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+top_build_prefix = @top_build_prefix@
+top_builddir = @top_builddir@
+top_srcdir = @top_srcdir@
+dist_doc_DATA = manual.html
+GENERATED = manual.html
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am  $(am__configure_deps)
+       @for dep in $?; do \
+         case '$(am__configure_deps)' in \
+           *$$dep*) \
+             ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
+               && { if test -f $@; then exit 0; else break; fi; }; \
+             exit 1;; \
+         esac; \
+       done; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign  docs/manual/Makefile'; \
+       cd $(top_srcdir) && \
+         $(AUTOMAKE) --foreign  docs/manual/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+       @case '$?' in \
+         *config.status*) \
+           cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+         *) \
+           echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+           cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+       esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps)
+       cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+mostlyclean-libtool:
+       -rm -f *.lo
+
+clean-libtool:
+       -rm -rf .libs _libs
+install-dist_docDATA: $(dist_doc_DATA)
+       @$(NORMAL_INSTALL)
+       test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)"
+       @list='$(dist_doc_DATA)'; for p in $$list; do \
+         if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+         f=$(am__strip_dir) \
+         echo " $(dist_docDATA_INSTALL) '$$d$$p' '$(DESTDIR)$(docdir)/$$f'"; \
+         $(dist_docDATA_INSTALL) "$$d$$p" "$(DESTDIR)$(docdir)/$$f"; \
+       done
+
+uninstall-dist_docDATA:
+       @$(NORMAL_UNINSTALL)
+       @list='$(dist_doc_DATA)'; for p in $$list; do \
+         f=$(am__strip_dir) \
+         echo " rm -f '$(DESTDIR)$(docdir)/$$f'"; \
+         rm -f "$(DESTDIR)$(docdir)/$$f"; \
+       done
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+       @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
+       list='$(DISTFILES)'; \
+         dist_files=`for file in $$list; do echo $$file; done | \
+         sed -e "s|^$$srcdirstrip/||;t" \
+             -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
+       case $$dist_files in \
+         */*) $(MKDIR_P) `echo "$$dist_files" | \
+                          sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
+                          sort -u` ;; \
+       esac; \
+       for file in $$dist_files; do \
+         if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+         if test -d $$d/$$file; then \
+           dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+           if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+             cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+           fi; \
+           cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+         else \
+           test -f $(distdir)/$$file \
+           || cp -p $$d/$$file $(distdir)/$$file \
+           || exit 1; \
+         fi; \
+       done
+check-am: all-am
+check: check-am
+all-am: Makefile $(DATA)
+installdirs:
+       for dir in "$(DESTDIR)$(docdir)"; do \
+         test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+       done
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+       @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+       $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+         install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+         `test -z '$(STRIP)' || \
+           echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+
+distclean-generic:
+       -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+       @echo "This command is intended for maintainers to use"
+       @echo "it deletes files that may require special tools to rebuild."
+clean: clean-am
+
+clean-am: clean-generic clean-libtool mostlyclean-am
+
+distclean: distclean-am
+       -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am: install-dist_docDATA
+
+install-dvi: install-dvi-am
+
+install-exec-am:
+
+install-html: install-html-am
+
+install-info: install-info-am
+
+install-man:
+
+install-pdf: install-pdf-am
+
+install-ps: install-ps-am
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+       -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic \
+       maintainer-clean-local
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic mostlyclean-libtool
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-dist_docDATA
+
+.MAKE: install-am install-strip
+
+.PHONY: all all-am check check-am clean clean-generic clean-libtool \
+       distclean distclean-generic distclean-libtool distdir dvi \
+       dvi-am html html-am info info-am install install-am \
+       install-data install-data-am install-dist_docDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic \
+       maintainer-clean-local mostlyclean mostlyclean-generic \
+       mostlyclean-libtool pdf pdf-am ps ps-am uninstall uninstall-am \
+       uninstall-dist_docDATA
+
+
+manual.html: manual.xml manual.xsl
+       xsltproc manual.xsl manual.xml > $@
+
+maintainer-clean-local:
+       rm -rf $(GENERATED)
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/docs/manual/manual.css b/docs/manual/manual.css
new file mode 100644 (file)
index 0000000..80bbfea
--- /dev/null
@@ -0,0 +1,33 @@
+html body {font: 76%/1.4em Arial, Helvetica, sans-serif;}
+html>body {font: 76%/1.4em Arial, Helvetica, sans-serif;}
+
+body {
+       margin-left: 40px;
+       padding: 0;
+    max-width: 750px;
+}
+
+.article {
+    font-size: 1.3em;
+    line-height: 1.5em;
+}
+
+.revhistory table, .revhistory td, .revhistory th {
+    border: 0;
+}
+
+.programlisting {
+    background-color: #eee;
+    padding: 1em;
+}
+
+.screen {
+    background-color: #eee;
+    padding: 1em;
+}
+
+.author {
+    color: #888;
+    font-style: italic;
+    font-weight: normal;
+}
diff --git a/docs/manual/manual.xml b/docs/manual/manual.xml
new file mode 100644 (file)
index 0000000..70de0cb
--- /dev/null
@@ -0,0 +1,456 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
+          "file:///opt/local/share/xml/docbook/4.5/docbookx.dtd">
+<article>
+<articleinfo>
+  <title>Udis86 Manual</title>
+  <author><firstname>Vivek</firstname><surname>Thampi</surname></author>
+  <authorinitials>vmt</authorinitials>
+  <pubdate>2009</pubdate>
+  <titleabbrev>Udis86 Manual</titleabbrev>
+  <revhistory>
+     <revision>
+        <revnumber>1.0</revnumber>
+        <date>02 May 2009</date>
+     </revision>
+  </revhistory>
+</articleinfo>
+
+
+<section><title>Introduction</title>
+Udis86 is a disassembler engine that interprets and decodes a 
+stream of binary machine code bytes as opcodes defined in the 
+x86 and x86-64 class of Instruction Set Archictures. The core 
+component of this project is libudis86 which provides a clean 
+and simple interface to disassemble binary code, and to inspect 
+the disassembly to various degrees of details. The library is 
+designed to aid software projects that entail analysis and 
+manipulation of all flavors of x86 binary code.
+</section>
+
+<section><title>Getting Started</title>
+
+<section><title>Building and Installing udis86</title>
+udis86 is developed for unix-like environments, and like most
+software, the basic steps towards building and installing 
+it are as follows.
+<screen>
+<prompt>$</prompt> <userinput>./configure</userinput>
+<prompt>$</prompt> <userinput>make</userinput>
+<prompt>$</prompt> <userinput>make install</userinput>
+</screen>
+Depending on your choice of install location, you may need to 
+have root privileges to do a make install. The install scripts 
+copy the necessary header and library files to appropriate 
+locations on the system.
+</section>
+
+<section><title>Interfacing with libudis86: A Quick Example</title>
+ The following code is an example of a program that interfaces 
+ with libudis86 and uses the API to generate assembly language 
+ output for 64-bit code, input from STDIN.
+ <example><title>libudis86 Usage Example</title> 
+<programlisting>#include &lt;stdio.h&gt;
+#include &lt;udis86.h&gt;
+
+int main()
+{
+    ud_t ud_obj;
+
+    ud_init(&amp;ud_obj);
+    ud_set_input_file(&amp;ud_obj, stdin);
+    ud_set_mode(&amp;ud_obj, 64);
+    ud_set_syntax(&amp;ud_obj, UD_SYN_INTEL);
+
+    while (ud_disassemble(&amp;ud_obj)) {
+        printf("\t%s\n", ud_insn_asm(&amp;ud_obj));
+    }
+
+    return 0;
+} </programlisting></example>
+ To compile the program (using gcc):
+ <screen> <prompt>$</prompt> <userinput>gcc -ludis86 example.c -o example</userinput> </screen>
+ This example should give you an idea of how this library can be used. The following 
+ sections describe, in detail, the complete API of libudis86.
+</section>
+</section>
+
+<section><title>libudis86 Programming Interface</title>
+ <section><title>ud_t: udis86 object</title>
+ libudis86 is reentrant, and to maintain that property it does not use static data. 
+ All data related to the disassembly are stored in a single object, called the udis86 
+ object <literal>ud_t</literal> (<literal>struct ud</literal>). So, to use libudis86 
+ you must create an instance of this object,
+ <programlisting> ud_t ud_obj; </programlisting>
+ and initialize it,
+ <programlisting> ud_init(&amp;ud_obj); </programlisting>
+ You can create multiple such objects and use with the library, each one maintaining
+ it's own disassembly state.
+ </section>
+
+  <section><title>Examining Instructions</title>
+  
+  <para>libudis86 exposes decoded instructions in an intermediate form meant 
+  to be useful for programs that want to examine them. This intermediate form
+  is available as values of certain fields of the <literal>ud_t</literal>
+  udis86 object used to disassemble the instruction, as described below.</para>
+
+  <section><title>Instruction Pointer</title>
+   <para>The program counter (eip/rip) value at which the instruction was
+   decoded, is available in <literal>ud_obj.pc</literal></para>
+  </section>
+
+  <section><title>Instruction Prefixes</title>
+   <para>Prefix bytes that affect the disassembly of the instruction
+   are availabe in the following fields, each of which corressponding
+   to particular type or class of prefixes.
+    <itemizedlist id="hhllo">
+     <listitem><literal>ud_obj.pfx_rex</literal>     - 64-bit mode REX prefix</listitem>
+     <listitem><literal>ud_obj.pfx_seg</literal>     - Segment register prefix</listitem>
+     <listitem><literal>ud_obj.pfx_opr</literal>     - Operand-size prefix (66h)</listitem>
+     <listitem><literal>ud_obj.pfx_adr</literal>     - Address-size prefix (67h)</listitem>
+     <listitem><literal>ud_obj.pfx_lock</literal>    - Lock prefix</listitem>
+     <listitem><literal>ud_obj.pfx_rep</literal>     - Rep prefix</listitem>
+     <listitem><literal>ud_obj.pfx_repe</literal>    - Repe prefix</listitem>
+     <listitem><literal>ud_obj.pfx_repne</literal>   - Repne prefix</listitem>
+    </itemizedlist>
+   These fields default to <literal>UD_NONE</literal> if the respective 
+   prefixes were not found.
+   </para>
+  </section>
+
+  <section><title>Instruction Mnemonic</title>
+   <para>The instruction mnemonic in the form of an enumerated constant
+   (<literal>enum ud_mnemonic_code</literal>) is available in
+   <literal>ud_obj.mnemonic</literal>. As a convention all mnemonic 
+   constants are composed by prefixing standard instruction mnemonics
+   with <literal>UD_I</literal>. For example, 
+        <literal>UD_Imov</literal>,
+        <literal>UD_Ixor</literal>,
+        <literal>UD_Ijmp</literal>, etc.
+   </para>
+  </section>
+
+  <section><title>Instruction Operands</title>
+  <para>
+  The intermediate form for instruction operands are availabe as
+  an array of objects of type <literal>struct ud_operand</literal>.
+  Given a udis86 object <literal>ud_obj</literal>, the 
+  <literal>n</literal>th operand is availabe in 
+  <literal>ud_obj.operand[n]</literal>. 
+  </para>
+  <para>
+  <literal>struct ud_operand</literal> has the following fields,
+    <itemizedlist>
+      <listitem><literal>type</literal></listitem>
+      <listitem><literal>size</literal></listitem>
+      <listitem><literal>base</literal></listitem>
+      <listitem><literal>index</literal></listitem>
+      <listitem><literal>scale</literal></listitem>
+      <listitem><literal>offset</literal></listitem>
+      <listitem><literal>lval</literal></listitem>
+    </itemizedlist>
+  </para>
+
+  <para>
+  The <literal>type</literal> and <literal>size</literal> fields
+  determine the type and size of the operand, respectively. The
+  possible types of operands are,
+  </para>
+
+  <itemizedlist>
+
+    <listitem><literal>UD_NONE</literal>
+      <para>
+      No operand.
+      </para>
+    </listitem>
+
+    <listitem><literal>UD_OP_MEM</literal>
+      <para>
+      Memory operand. The intermediate form normalizes all memory 
+      address equations to the scale-index-base form. The address 
+      equation is availabe in 
+        <literal>base</literal>, 
+        <literal>index</literal>, and
+        <literal>scale</literal>.
+      If the <literal>offset</literal> field has a non-zero value 
+      (one of 8, 16, 32, and 64), <literal>lval</literal> will
+      contain the memory offset. Note that <literal>base</literal> 
+      and <literal>index</literal> fields contain the base and 
+      index register of the address equation, in the form of an 
+      enumerated constant <literal>enum ud_type</literal>.
+      <literal>scale</literal> contains an integer value that
+      the index register must be scaled by.
+      </para>
+    </listitem>
+
+    <listitem><literal>UD_OP_PTR</literal>
+     <para>A Segmet:Offset pointer operand.
+     <literal>size</literal> can have two values 32 (for 16:16 seg:off) 
+     and 48 (for 16:32 seg:off). The value is available in
+     <literal>lval</literal> (<literal>lval.ptr.seg</literal> and <literal>lval.ptr.off</literal>.)
+     </para>
+    </listitem>
+
+    <listitem><literal>UD_OP_IMM</literal>
+      <para>
+      Immediate operand. Value available in <literal>lval</literal>.
+      </para>
+    </listitem>
+
+    <listitem><literal>UD_OP_JIMM</literal>
+      <para>
+      Immediate operand to branch instruction (relative offsets). 
+      Value available in <literal>lval</literal>.
+      </para>
+    </listitem>
+    
+    <listitem><literal>UD_OP_CONST</literal>
+      <para>
+      Implicit constant operand.
+      Value available in <literal>lval</literal>.
+      </para>
+    </listitem>
+
+    <listitem>
+     <literal>UD_OP_REG</literal>
+     <para>
+     Operand is a register. The specific register is contained in 
+     <literal>base</literal> in the form of an enumerated constant, 
+     <literal>enum ud_type</literal>.
+     </para>
+    </listitem>
+  </itemizedlist>
+
+  <para>The <literal>lval</literal> is a union data structure that
+  aggregates integer fields of different sizes, that store values 
+  depending on the type of operand.
+  <itemizedlist>
+    <listitem><literal>lval.sbyte</literal>   - Signed Byte</listitem>
+    <listitem><literal>lval.ubyte</literal>   - Unsigned Byte</listitem>
+    <listitem><literal>lval.sword</literal>   - Signed Word</listitem>
+    <listitem><literal>lval.uword</literal>   - Unsigned Word</listitem>
+    <listitem><literal>lval.sdword</literal>  - Signed Double Word</listitem>
+    <listitem><literal>lval.udword</literal>  - Unsigned Double Word</listitem>
+    <listitem><literal>lval.sqword</literal>  - Signed Quad Word</listitem>
+    <listitem><literal>lval.uqword</literal>  - Unsigned Quad Word</listitem>
+    <listitem><literal>lval.ptr.seg</literal> - Pointer Segment in Segment:Offset</listitem>
+    <listitem><literal>lval.ptr.off</literal> - Pointer Offset in Segment:Offset  </listitem>
+  </itemizedlist>
+  </para>
+
+  <para>The following enumerated constants (<literal>enum ud_type</literal>)
+  are possible values for <literal>base</literal> and <literal>index</literal>.
+  Note that a value of <literal>UD_NONE</literal> simply means that the
+  field is not valid for the current instruction.
+  </para>
+
+  <programlisting>
+    UD_NONE,
+
+    /* 8 bit GPRs */
+    UD_R_AL,    UD_R_CL,    UD_R_DL,    UD_R_BL,
+    UD_R_AH,    UD_R_CH,    UD_R_DH,    UD_R_BH,
+    UD_R_SPL,   UD_R_BPL,   UD_R_SIL,   UD_R_DIL,
+    UD_R_R8B,   UD_R_R9B,   UD_R_R10B,  UD_R_R11B,
+    UD_R_R12B,  UD_R_R13B,  UD_R_R14B,  UD_R_R15B,
+
+    /* 16 bit GPRs */
+    UD_R_AX,    UD_R_CX,    UD_R_DX,    UD_R_BX,
+    UD_R_SP,    UD_R_BP,    UD_R_SI,    UD_R_DI,
+    UD_R_R8W,   UD_R_R9W,   UD_R_R10W,  UD_R_R11W,
+    UD_R_R12W,  UD_R_R13W,  UD_R_R14W,  UD_R_R15W,
+            
+    /* 32 bit GPRs */
+    UD_R_EAX,   UD_R_ECX,   UD_R_EDX,   UD_R_EBX,
+    UD_R_ESP,   UD_R_EBP,   UD_R_ESI,   UD_R_EDI,
+    UD_R_R8D,   UD_R_R9D,   UD_R_R10D,  UD_R_R11D,
+    UD_R_R12D,  UD_R_R13D,  UD_R_R14D,  UD_R_R15D,
+            
+    /* 64 bit GPRs */
+    UD_R_RAX,   UD_R_RCX,   UD_R_RDX,   UD_R_RBX,
+     UD_R_RSP,  UD_R_RBP,   UD_R_RSI,   UD_R_RDI,
+    UD_R_R8,    UD_R_R9,    UD_R_R10,   UD_R_R11,
+    UD_R_R12,   UD_R_R13,   UD_R_R14,   UD_R_R15,
+
+    /* segment registers */
+    UD_R_ES,    UD_R_CS,    UD_R_SS,    UD_R_DS,
+    UD_R_FS,    UD_R_GS,    
+
+    /* control registers*/
+    UD_R_CR0,   UD_R_CR1,   UD_R_CR2,   UD_R_CR3,
+    UD_R_CR4,   UD_R_CR5,   UD_R_CR6,   UD_R_CR7,
+    UD_R_CR8,   UD_R_CR9,   UD_R_CR10,  UD_R_CR11,
+    UD_R_CR12,  UD_R_CR13,  UD_R_CR14,  UD_R_CR15,
+            
+    /* debug registers */
+    UD_R_DR0,   UD_R_DR1,   UD_R_DR2,   UD_R_DR3,
+    UD_R_DR4,   UD_R_DR5,   UD_R_DR6,   UD_R_DR7,
+    UD_R_DR8,   UD_R_DR9,   UD_R_DR10,  UD_R_DR11,
+    UD_R_DR12,  UD_R_DR13,  UD_R_DR14,  UD_R_DR15,
+
+    /* mmx registers */
+    UD_R_MM0,   UD_R_MM1,   UD_R_MM2,   UD_R_MM3,
+    UD_R_MM4,   UD_R_MM5,   UD_R_MM6,   UD_R_MM7,
+
+    /* x87 registers */
+    UD_R_ST0,   UD_R_ST1,   UD_R_ST2,   UD_R_ST3,
+    UD_R_ST4,   UD_R_ST5,   UD_R_ST6,   UD_R_ST7, 
+
+    /* extended multimedia registers */
+    UD_R_XMM0,  UD_R_XMM1,  UD_R_XMM2,  UD_R_XMM3,
+    UD_R_XMM4,  UD_R_XMM5,  UD_R_XMM6,  UD_R_XMM7,
+    UD_R_XMM8,  UD_R_XMM9,  UD_R_XMM10, UD_R_XMM11,
+    UD_R_XMM12, UD_R_XMM13, UD_R_XMM14, UD_R_XMM15,
+
+    /* eip/rip */
+    UD_R_RIP </programlisting>
+
+  </section>
+ </section>
+
+ <section><title>Function Reference</title>
+  <itemizedlist>
+
+   <listitem>
+    <literal>void ud_init (ud_t* ud_obj)</literal>
+    <para>
+    <literal>ud_t</literal> object initializer. This function must be called on a 
+    udis86 object before it can used anywhere else.
+    </para>
+   </listitem>
+    
+   <listitem>
+    <literal>void ud_set_input_hook(ud_t* ud_obj, int (*hook)())</literal>
+    <para> This function sets the input source for the library. To retrieve each byte in 
+    the stream, libudis86 calls back the function pointed to by <literal>hook</literal>. 
+    The hook function, defined by the user code, must return a single byte of code 
+    each time it is called. To signal end-of-input, it must return the constant, 
+    <literal>UD_EOI</literal>.</para>
+   </listitem>
+
+   <listitem>
+    <literal>void ud_set_user_opaque_data(ud_t* ud_obj, void* opaque);</literal>
+    <para>Associates a pointer with the udis86 object to be retrieved and used in user 
+    functions, such as the input hook callback function.</para>
+   </listitem>
+
+   <listitem>
+    <literal>void* ud_get_user_opaque_data(ud_t* ud_obj);</literal>
+    <para>This function returns any pointer associated with the udis86 object, using 
+    the <literal>ud_set_opaque_data</literal> function.</para>
+   </listitem>
+
+    <listitem>
+     <literal>void ud_set_input_buffer(ud_t* ud_obj, unsigned char* buffer, size_t size);</literal>
+     <para>Sets the input source for the library to a buffer of fixed size.</para>
+    </listitem>
+
+    <listitem>
+     <literal>void ud_set_input_file(ud_t* ud_obj, FILE* filep);</literal>
+     <para>This function sets the input source for the library to a file pointed to by the 
+     passed FILE pointer. Note that the library does not perform any checks, assuming 
+     the file pointer to be properly initialized.</para>
+    </listitem> 
+    <listitem> 
+     <literal>void ud_set_mode(ud_t* ud_obj, uint8_t mode_bits);</literal>
+     <para>Sets the mode of disassembly. Possible values are 16, 32, and 64. By default, the 
+     library works in 32bit mode.</para>
+    </listitem>
+
+    <listitem>
+     <literal>void ud_set_pc(ud_t*, uint64_t pc);</literal>
+     <para>Sets the program counter (EIP/RIP). This changes the offset of the assembly output 
+     generated, with direct effect on branch instructions.</para>
+    </listitem>
+
+    <listitem>
+     <literal>void ud_set_syntax(ud_t*, void (*translator)(ud_t*));</literal>
+     <para>libudis86 disassembles one instruction at a time into an intermediate form that 
+     lets you inspect the instruction and its various aspects individually. But to generate the 
+     assembly language output, this intermediate form must be translated. This function sets 
+     the translator. There are two inbuilt translators,</para>
+
+     <itemizedlist>
+      <listitem><literal>UD_SYN_INTEL</literal> - for INTEL (NASM-like) syntax.</listitem>
+      <listitem><literal>UD_SYN_ATT</literal> - for AT&amp;T (GAS-like) syntax.</listitem>
+     </itemizedlist>
+
+     <para>If you do not want libudis86 to translate, you can pass 
+     <literal>NULL</literal> to the function, with no more translations 
+     thereafter. This is particularly useful for cases when you only 
+     want to identify chunks of code and then create the assembly output 
+     if needed.</para>
+     <para>If you want to create your own translator, you must pass a pointer to function 
+     that accepts a pointer to ud_t. This function will be called by libudis86 after each 
+     instruction is decoded.</para>
+    </listitem>
+
+    <listitem>
+     <literal>void ud_set_vendor(ud_t*, unsigned vendor);</literal>
+     <para>Sets the vendor of whose instruction to choose from. This is only useful for 
+     selecting the VMX or SVM instruction sets at which point INTEL and AMD have diverged 
+     significantly. At a later stage, support for a more granular selection of instruction 
+     sets maybe added.
+
+     <itemizedlist>
+      <listitem><literal>UD_VENDOR_INTEL</literal> - for INTEL instruction set.</listitem>
+      <listitem><literal>UD_VEDNOR_ATT</literal> - for AMD instruction set.</listitem>
+     </itemizedlist>
+     </para>
+
+    </listitem>
+
+    <listitem>
+     <literal>unsigned int ud_disassemble(ud_t*);</literal>
+     <para>Disassembles the next instruction in the input stream. Returns the number of 
+     bytes disassembled. A 0 indicates end of input. Note, to restart disassembly, after 
+     the end of input, you must call one of the input setting functions with the new 
+     input source.</para>
+    </listitem>
+
+    <listitem>
+     <literal>unsigned int ud_insn_len(ud_t* u);</literal>
+     <para>Returns the number of bytes disassembled.</para>
+    </listitem>
+
+    <listitem>
+     <literal>uint64_t ud_insn_off(ud_t*);</literal>
+     <para>Returns the starting offset of the disassembled instruction relative to the 
+     program counter value specified initially.</para>
+    </listitem>
+
+    <listitem>
+     <literal>char* ud_insn_hex(ud_t*);</literal>
+     <para>Returns pointer to character string holding the hexadecimal 
+     representation of the disassembled bytes.</para>
+    </listitem>
+
+    <listitem>
+     <literal>uint8_t* ud_insn_ptr(ud_t* u);</literal>
+     <para>Returns pointer to the buffer holding the instruction bytes. 
+     Use <literal>ud_insn_len()</literal>, to determine the length of this 
+     buffer.</para>
+    </listitem>
+
+    <listitem>
+     <literal>char* ud_insn_asm(ud_t* u);</literal>
+     <para>If the syntax is specified, returns pointer to the character 
+     string holding assembly language representation of the disassembled 
+     instruction.</para>
+    </listitem>
+
+    <listitem>
+     <literal>void ud_input_skip(ud_t*, size_t n);</literal>
+     <para>Skips n number of bytes in the input stream</para>
+    </listitem>
+
+  </itemizedlist>
+ </section>
+
+
+</section>
+
+</article>
diff --git a/docs/manual/manual.xsl b/docs/manual/manual.xsl
new file mode 100644 (file)
index 0000000..4928f8d
--- /dev/null
@@ -0,0 +1,15 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                xmlns:fo="http://www.w3.org/1999/XSL/Format"
+                version="1.0">
+  <xsl:import href="/opt/local/share/xsl/docbook-xsl/html/docbook.xsl"/>
+  <xsl:param name="html.stylesheet" select="'manual.css'"/>
+  <xsl:param name="toc.section.depth">3</xsl:param>
+  <xsl:param name="generate.section.toc.level" select="0"></xsl:param>
+  <xsl:param name="section.autolabel" select="1"></xsl:param>
+  <xsl:param name="section.autolabel.max.depth" select="3"></xsl:param>
+  <xsl:param name="section.label.includes.component.label" select="1"></xsl:param>
+  <xsl:param name="table.cell.border.thickness">0</xsl:param>
+</xsl:stylesheet>
+
+
diff --git a/docs/ss.jpg b/docs/ss.jpg
deleted file mode 100644 (file)
index 7b7274c..0000000
Binary files a/docs/ss.jpg and /dev/null differ
diff --git a/docs/udis86.odt b/docs/udis86.odt
deleted file mode 100644 (file)
index 3e8a05b..0000000
Binary files a/docs/udis86.odt and /dev/null differ
diff --git a/docs/udis86.pdf b/docs/udis86.pdf
deleted file mode 100644 (file)
index 25d51c6..0000000
Binary files a/docs/udis86.pdf and /dev/null differ
diff --git a/docs/x86/optable.xml b/docs/x86/optable.xml
new file mode 100644 (file)
index 0000000..14d3163
--- /dev/null
@@ -0,0 +1,3184 @@
+<?xml version="1.0"?>
+<?xml-stylesheet href="x86optable.xsl" type="text/xsl"?>
+<x86optable>
+
+  <!--
+    udis86 - docs/x86optable.xml
+
+    UDIS86 X86/AMD64/IA32/IA32e OPCODE TABLE   
+
+    Copyright (c) 2008, 2009 Vivek Thampi
+
+    Permission is hereby granted, free of charge, to any person obtaining a copy
+    of this software and associated documentation files (the "Software"), to deal
+    in the Software without restriction, including without limitation the rights
+    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+    copies of the Software, and to permit persons to whom the Software is
+    furnished to do so, subject to the following conditions:
+
+    The above copyright notice and this permission notice shall be included in
+    all copies or substantial portions of the Software.
+
+    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+    THE SOFTWARE.
+  -->
+
+  <instruction mnemonic="3dnow">
+    <opcode> ; 0f 0f ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="aaa">
+    <opcode mode="inv64"> ; 37 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="aad">
+    <opcode mode="inv64"> ; d5 ; Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="aam">
+    <opcode mode="inv64"> ; d4 ; Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="aas">
+    <opcode mode="inv64"> ; 3f ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="adc">
+    <opcode> aso rexr rexx rexb ; 10 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 11 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 12 ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 13 ; Gv Ev </opcode>
+    <opcode> ; 14 ; AL Ib </opcode>
+    <opcode> oso rexw ; 15 ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 80 /2 ; Eb Ib </opcode>
+    <opcode cast="1" mode="inv64"> aso rexr rexx rexb ; 82 /2 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /2 ; Ev Iz </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /2 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="add">
+    <opcode> aso rexr rexx rexb ; 00 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 01 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 02 ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 03 ; Gv Ev </opcode>
+    <opcode> ; 04 ; AL Ib </opcode>
+    <opcode> oso rexw ; 05 ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 80 /0 ; Eb Ib </opcode>
+    <opcode cast="1" mode="inv64"> aso rexr rexx rexb ; 82 /0 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /0 ; Ev Iz </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /0 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="addpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 58 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="addps">
+    <opcode> aso rexr rexx rexb ; 0f 58 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="addsd">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 58 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="addss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 58 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="addsubpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f d0 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="addsubps">
+    <opcode> aso rexr rexx rexb ; ssef2 0f d0 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="and">
+    <opcode> aso rexr rexx rexb ; 20 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 21 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 22 ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 23 ; Gv Ev </opcode>
+    <opcode> ; 24 ; AL Ib </opcode>
+    <opcode> oso rexw ; 25 ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; 80 /4 ; Eb Ib </opcode>
+    <opcode cast="1" mode="inv64"> aso rexr rexx rexb ; 82 /4 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /4 ; Ev Iz </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /4 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="andpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 54 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="andps">
+    <opcode> aso rexr rexx rexb ; 0f 54 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="andnpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 55 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="andnps">
+    <opcode> aso rexr rexx rexb ; 0f 55 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="arpl">
+    <opcode mode="inv64"> aso ; 63 /M16 ; Ew Gw </opcode>
+    <opcode mode="inv64"> aso ; 63 /M32 ; Ew Gw </opcode>
+  </instruction>
+
+  <instruction mnemonic="movsxd">
+    <opcode cast="2"> aso oso rexw rexx rexr rexb ; 63 /M64 ; Gv Ed </opcode>
+  </instruction>
+
+  <instruction mnemonic="bound">
+    <opcode mode="inv64"> aso oso ; 62 ; Gv M </opcode>
+  </instruction>
+
+  <instruction mnemonic="bsf">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f bc ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="bsr">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f bd ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="bswap">
+    <opcode> oso rexw rexb ; 0f c8 ; rAXr8 </opcode>
+    <opcode> oso rexw rexb ; 0f c9 ; rCXr9 </opcode>
+    <opcode> oso rexw rexb ; 0f ca ; rDXr10 </opcode>
+    <opcode> oso rexw rexb ; 0f cb ; rBXr11 </opcode>
+    <opcode> oso rexw rexb ; 0f cc ; rSPr12 </opcode>
+    <opcode> oso rexw rexb ; 0f cd ; rBPr13 </opcode>
+    <opcode> oso rexw rexb ; 0f ce ; rSIr14 </opcode>
+    <opcode> oso rexw rexb ; 0f cf ; rDIr15 </opcode>
+  </instruction>
+
+  <instruction mnemonic="bt">
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 0F BA /4 ; Ev Ib </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 0f a3 ; Ev Gv </opcode>
+  </instruction>
+
+  <instruction mnemonic="btc">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f bb ; Ev Gv </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 0F BA /7 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="btr">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f b3 ; Ev Gv </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 0F BA /6 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="bts">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f ab ; Ev Gv </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 0F BA /5 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="call">
+    <opcode mode="def64" cast="1"> aso oso rexw rexr rexx rexb ; FF /2 ; Ev </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; FF /3 ; Ep </opcode>
+    <opcode mode="def64"> oso ; e8 ; Jz </opcode>
+    <opcode mode="inv64"> oso ; 9a ; Ap </opcode>
+  </instruction>
+
+  <instruction mnemonic="cbw">
+    <opcode> oso rexw ; 98 /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cwde">
+    <opcode> oso rexw ; 98 /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cdqe">
+    <opcode> oso rexw ; 98 /O64 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="clc">
+    <opcode> f8 ; </opcode>
+  </instruction>
+  
+  <instruction mnemonic="cld">
+    <opcode> fc ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="clflush">
+    <opcode> aso rexw rexr rexx rexb ; 0F AE /7 /mod=!11 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="clgi">
+    <opcode> 0F 01 /3 /mod=11 /rm=5 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="cli">
+    <opcode> fa ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="clts">
+    <opcode> 0f 06 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmc">
+    <opcode> f5 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovo">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 40 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovno">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 41 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovb">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 42 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovae">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 43 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovz">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 44 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovnz">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 45 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovbe">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 46 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmova">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 47 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovs">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 48 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovns">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 49 ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovp">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 4a ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovnp">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 4b ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovl">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 4c ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovge">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 4d ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovle">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 4e ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmovg">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 4f ; Gv Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmp">
+    <opcode> aso rexr rexx rexb ; 38 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 39 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 3a ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 3b ; Gv Ev </opcode>
+    <opcode> ; 3c ; AL Ib </opcode>
+    <opcode> oso rexw ; 3d ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 80 /7 ; Eb Ib </opcode>
+    <opcode cast="1" mode="inv64"> aso rexr rexx rexb ; 82 /7 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /7 ; Ev Iz </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /7 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmppd">
+    <opcode> aso rexr rexx rexb ; sse66 0f c2 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpps">
+    <opcode> aso rexr rexx rexb ; 0f c2 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpsb">
+    <opcode> a6 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpsw">
+    <opcode> oso rexw ; a7 /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpsd">
+    <opcode> oso rexw ; a7 /O32 ; </opcode>
+    <opcode> aso rexr rexx rexb ; ssef2 0f c2 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpsq">
+    <opcode> oso rexw ; a7 /O64 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f c2 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpxchg">
+    <opcode> aso rexr rexx rexb ; 0f b0 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 0f b1 ; Ev Gv </opcode>
+  </instruction>
+
+  <instruction mnemonic="cmpxchg8b">
+    <opcode> aso rexr rexx rexb ; 0F C7 /1 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="comisd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 2f ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="comiss">
+    <opcode> aso rexr rexx rexb ; 0f 2f ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cpuid">
+    <opcode> 0f a2 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtdq2pd">
+    <opcode> aso rexr rexx rexb ; ssef3 0f e6 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtdq2ps">
+    <opcode> aso rexr rexx rexb ; 0f 5b ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtpd2dq">
+    <opcode> aso rexr rexx rexb ; ssef2 0f e6 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtpd2pi">
+    <opcode> aso rexr rexx rexb ; sse66 0f 2d ; P W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtpd2ps">
+    <opcode> aso rexr rexx rexb ; sse66 0f 5a ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtpi2ps">
+    <opcode> aso rexr rexx rexb ; 0f 2a ; V Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtpi2pd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 2a ; V Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtps2dq">
+    <opcode> aso rexr rexx rexb ; sse66 0f 5b ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtps2pi">
+    <opcode> aso rexr rexx rexb ; 0f 2d ; P W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtps2pd">
+    <opcode> aso rexr rexx rexb ; 0f 5a ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtsd2si">
+    <opcode cast="1"> aso rexr rexx rexb ; ssef2 0f 2d ; Gvw W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtsd2ss">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 5a ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtsi2ss">
+    <opcode cast="2"> aso rexr rexx rexb ; ssef3 0f 2a ; V Ex </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtss2si">
+    <opcode cast="1"> aso rexr rexx rexb ; ssef3 0f 2d ; Gvw W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtss2sd">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 5a ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvttpd2pi">
+    <opcode> aso rexr rexx rexb ; sse66 0f 2c ; P W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvttpd2dq">
+    <opcode> ; sse66 0f e6 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvttps2dq">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 5b ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvttps2pi">
+    <opcode> aso rexr rexx rexb ; 0f 2c ; P W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvttsd2si">
+    <opcode cast="1"> aso rexr rexx rexb ; ssef2 0f 2c ; Gvw W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvtsi2sd">
+    <opcode cast="2"> aso rexw rexr rexx rexb ; ssef2 0f 2a ; V Ex </opcode>
+  </instruction>
+
+  <instruction mnemonic="cvttss2si">
+    <opcode cast="1"> aso rexr rexx rexb ; ssef3 0f 2c ; Gvw W </opcode>
+  </instruction>
+
+  <instruction mnemonic="cwd">
+    <opcode> oso rexw ; 99 /O16 ;  </opcode>
+  </instruction>
+
+  <instruction mnemonic="cdq">
+    <opcode> oso rexw ; 99 /O32 ;  </opcode>
+  </instruction>
+
+  <instruction mnemonic="cqo">
+    <opcode> oso rexw ; 99 /O64 ;  </opcode>
+  </instruction>
+
+  <instruction mnemonic="daa">
+    <opcode mode="inv64"> ; 27 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="das">
+    <opcode mode="inv64"> ; 2f ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="dec">
+    <opcode> oso ; 48 ; eAX </opcode>
+    <opcode> oso ; 49 ; eCX </opcode>
+    <opcode> oso ; 4a ; eDX </opcode>
+    <opcode> oso ; 4b ; eBX </opcode>
+    <opcode> oso ; 4c ; eSP </opcode>
+    <opcode> oso ; 4d ; eBP </opcode>
+    <opcode> oso ; 4e ; eSI </opcode>
+    <opcode> oso ; 4f ; eDI </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; FE /1 ; Eb </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; FF /1 ; Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="div">
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /6 ; Ev </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /6 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="divpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 5e ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="divps">
+    <opcode> aso rexr rexx rexb ; 0f 5e ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="divsd">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 5e ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="divss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 5e ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="emms">
+    <opcode> 0f 77 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="enter">
+    <opcode mode="def64 depM"> ; c8 ; Iw Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="f2xm1">
+    <opcode> 0F D9 /mod=11 /x87=30 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fabs">
+    <opcode> 0F D9 /mod=11 /x87=21 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fadd">
+    <class> X87 </class>
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /0 ; Mq </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /0 ; Md </opcode>
+    <opcode> DC /mod=11 /x87=00 ; ST0 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=01 ; ST1 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=02 ; ST2 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=03 ; ST3 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=04 ; ST4 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=05 ; ST5 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=06 ; ST6 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=07 ; ST7 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=00 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=01 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=02 ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=03 ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=04 ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=05 ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=06 ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=07 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="faddp">
+    <opcode> DE /mod=11 /x87=00 ; ST0 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=01 ; ST1 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=02 ; ST2 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=03 ; ST3 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=04 ; ST4 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=05 ; ST5 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=06 ; ST6 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=07 ; ST7 ST0 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fbld">
+    <class> X87 </class>
+    <opcode> aso rexr rexx rexb ; DF /mod=!11 /4 ; Mt </opcode>
+  </instruction>
+
+  <instruction mnemonic="fbstp">
+    <class> X87 </class>
+    <opcode> aso rexr rexx rexb ; DF /mod=!11 /6 ; Mt </opcode>
+  </instruction>
+
+  <instruction mnemonic="fchs">
+    <class> X87 </class>
+    <opcode> D9 /mod=11 /x87=20 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="fclex">
+    <opcode> DB /mod=11 /x87=22 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmovb">
+    <opcode> DA /mod=11 /x87=00 ; ST0 ST0 </opcode>
+    <opcode> DA /mod=11 /x87=01 ; ST0 ST1 </opcode>
+    <opcode> DA /mod=11 /x87=02 ; ST0 ST2 </opcode>
+    <opcode> DA /mod=11 /x87=03 ; ST0 ST3 </opcode>
+    <opcode> DA /mod=11 /x87=04 ; ST0 ST4 </opcode>
+    <opcode> DA /mod=11 /x87=05 ; ST0 ST5 </opcode>
+    <opcode> DA /mod=11 /x87=06 ; ST0 ST6 </opcode>
+    <opcode> DA /mod=11 /x87=07 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmove">
+    <opcode> DA /mod=11 /x87=08 ; ST0 ST0 </opcode>
+    <opcode> DA /mod=11 /x87=09 ; ST0 ST1 </opcode>
+    <opcode> DA /mod=11 /x87=0A ; ST0 ST2 </opcode>
+    <opcode> DA /mod=11 /x87=0B ; ST0 ST3 </opcode>
+    <opcode> DA /mod=11 /x87=0C ; ST0 ST4 </opcode>
+    <opcode> DA /mod=11 /x87=0D ; ST0 ST5 </opcode>
+    <opcode> DA /mod=11 /x87=0E ; ST0 ST6 </opcode>
+    <opcode> DA /mod=11 /x87=0F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmovbe">
+    <opcode> DA /mod=11 /x87=10 ; ST0 ST0 </opcode>
+    <opcode> DA /mod=11 /x87=11 ; ST0 ST1 </opcode>
+    <opcode> DA /mod=11 /x87=12 ; ST0 ST2 </opcode>
+    <opcode> DA /mod=11 /x87=13 ; ST0 ST3 </opcode>
+    <opcode> DA /mod=11 /x87=14 ; ST0 ST4 </opcode>
+    <opcode> DA /mod=11 /x87=15 ; ST0 ST5 </opcode>
+    <opcode> DA /mod=11 /x87=16 ; ST0 ST6 </opcode>
+    <opcode> DA /mod=11 /x87=17 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmovu">
+    <opcode> DA /mod=11 /x87=18 ; ST0 ST0 </opcode>
+    <opcode> DA /mod=11 /x87=19 ; ST0 ST1 </opcode>
+    <opcode> DA /mod=11 /x87=1A ; ST0 ST2 </opcode>
+    <opcode> DA /mod=11 /x87=1B ; ST0 ST3 </opcode>
+    <opcode> DA /mod=11 /x87=1C ; ST0 ST4 </opcode>
+    <opcode> DA /mod=11 /x87=1D ; ST0 ST5 </opcode>
+    <opcode> DA /mod=11 /x87=1E ; ST0 ST6 </opcode>
+    <opcode> DA /mod=11 /x87=1F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmovnb">
+    <opcode> DB /mod=11 /x87=00 ; ST0 ST0 </opcode>
+    <opcode> DB /mod=11 /x87=01 ; ST0 ST1 </opcode>
+    <opcode> DB /mod=11 /x87=02 ; ST0 ST2 </opcode>
+    <opcode> DB /mod=11 /x87=03 ; ST0 ST3 </opcode>
+    <opcode> DB /mod=11 /x87=04 ; ST0 ST4 </opcode>
+    <opcode> DB /mod=11 /x87=05 ; ST0 ST5 </opcode>
+    <opcode> DB /mod=11 /x87=06 ; ST0 ST6 </opcode>
+    <opcode> DB /mod=11 /x87=07 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmovne">
+    <opcode> DB /mod=11 /x87=08 ; ST0 ST0 </opcode>
+    <opcode> DB /mod=11 /x87=09 ; ST0 ST1 </opcode>
+    <opcode> DB /mod=11 /x87=0A ; ST0 ST2 </opcode>
+    <opcode> DB /mod=11 /x87=0B ; ST0 ST3 </opcode>
+    <opcode> DB /mod=11 /x87=0C ; ST0 ST4 </opcode>
+    <opcode> DB /mod=11 /x87=0D ; ST0 ST5 </opcode>
+    <opcode> DB /mod=11 /x87=0E ; ST0 ST6 </opcode>
+    <opcode> DB /mod=11 /x87=0F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmovnbe">
+    <opcode> DB /mod=11 /x87=10 ; ST0 ST0 </opcode>
+    <opcode> DB /mod=11 /x87=11 ; ST0 ST1 </opcode>
+    <opcode> DB /mod=11 /x87=12 ; ST0 ST2 </opcode>
+    <opcode> DB /mod=11 /x87=13 ; ST0 ST3 </opcode>
+    <opcode> DB /mod=11 /x87=14 ; ST0 ST4 </opcode>
+    <opcode> DB /mod=11 /x87=15 ; ST0 ST5 </opcode>
+    <opcode> DB /mod=11 /x87=16 ; ST0 ST6 </opcode>
+    <opcode> DB /mod=11 /x87=17 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcmovnu">
+    <opcode> DB /mod=11 /x87=18 ; ST0 ST0 </opcode>
+    <opcode> DB /mod=11 /x87=19 ; ST0 ST1 </opcode>
+    <opcode> DB /mod=11 /x87=1A ; ST0 ST2 </opcode>
+    <opcode> DB /mod=11 /x87=1B ; ST0 ST3 </opcode>
+    <opcode> DB /mod=11 /x87=1C ; ST0 ST4 </opcode>
+    <opcode> DB /mod=11 /x87=1D ; ST0 ST5 </opcode>
+    <opcode> DB /mod=11 /x87=1E ; ST0 ST6 </opcode>
+    <opcode> DB /mod=11 /x87=1F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fucomi">
+    <opcode> DB /mod=11 /x87=28 ; ST0 ST0 </opcode>
+    <opcode> DB /mod=11 /x87=29 ; ST0 ST1 </opcode>
+    <opcode> DB /mod=11 /x87=2A ; ST0 ST2 </opcode>
+    <opcode> DB /mod=11 /x87=2B ; ST0 ST3 </opcode>
+    <opcode> DB /mod=11 /x87=2C ; ST0 ST4 </opcode>
+    <opcode> DB /mod=11 /x87=2D ; ST0 ST5 </opcode>
+    <opcode> DB /mod=11 /x87=2E ; ST0 ST6 </opcode>
+    <opcode> DB /mod=11 /x87=2F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcom">
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /2 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /2 ; Mq </opcode>
+    <opcode> D8 /mod=11 /x87=10 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=11 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=12 ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=13 ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=14 ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=15 ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=16 ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=17 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcom2">
+    <opcode> DC /mod=11 /x87=10 ; ST0 </opcode>
+    <opcode> DC /mod=11 /x87=11 ; ST1 </opcode>
+    <opcode> DC /mod=11 /x87=12 ; ST2 </opcode>
+    <opcode> DC /mod=11 /x87=13 ; ST3 </opcode>
+    <opcode> DC /mod=11 /x87=14 ; ST4 </opcode>
+    <opcode> DC /mod=11 /x87=15 ; ST5 </opcode>
+    <opcode> DC /mod=11 /x87=16 ; ST6 </opcode>
+    <opcode> DC /mod=11 /x87=17 ; ST7 </opcode>
+    <class> X87 UNDOC </class>
+  </instruction>
+
+  <instruction mnemonic="fcomp3">
+    <opcode> DC /mod=11 /x87=18 ; ST0 </opcode>
+    <opcode> DC /mod=11 /x87=19 ; ST1 </opcode>
+    <opcode> DC /mod=11 /x87=1A ; ST2 </opcode>
+    <opcode> DC /mod=11 /x87=1B ; ST3 </opcode>
+    <opcode> DC /mod=11 /x87=1C ; ST4 </opcode>
+    <opcode> DC /mod=11 /x87=1D ; ST5 </opcode>
+    <opcode> DC /mod=11 /x87=1E ; ST6 </opcode>
+    <opcode> DC /mod=11 /x87=1F ; ST7 </opcode>
+    <class> X87 UNDOC </class>
+  </instruction>
+
+  <instruction mnemonic="fcomi">
+    <opcode> DB /mod=11 /x87=30 ; ST0 ST0 </opcode>
+    <opcode> DB /mod=11 /x87=31 ; ST0 ST1 </opcode>
+    <opcode> DB /mod=11 /x87=32 ; ST0 ST2 </opcode>
+    <opcode> DB /mod=11 /x87=33 ; ST0 ST3 </opcode>
+    <opcode> DB /mod=11 /x87=34 ; ST0 ST4 </opcode>
+    <opcode> DB /mod=11 /x87=35 ; ST0 ST5 </opcode>
+    <opcode> DB /mod=11 /x87=36 ; ST0 ST6 </opcode>
+    <opcode> DB /mod=11 /x87=37 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fucomip">
+    <opcode> DF /mod=11 /x87=28 ; ST0 ST0 </opcode>
+    <opcode> DF /mod=11 /x87=29 ; ST0 ST1 </opcode>
+    <opcode> DF /mod=11 /x87=2A ; ST0 ST2 </opcode>
+    <opcode> DF /mod=11 /x87=2B ; ST0 ST3 </opcode>
+    <opcode> DF /mod=11 /x87=2C ; ST0 ST4 </opcode>
+    <opcode> DF /mod=11 /x87=2D ; ST0 ST5 </opcode>
+    <opcode> DF /mod=11 /x87=2E ; ST0 ST6 </opcode>
+    <opcode> DF /mod=11 /x87=2F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcomip">
+    <opcode> DF /mod=11 /x87=30 ; ST0 ST0 </opcode>
+    <opcode> DF /mod=11 /x87=31 ; ST0 ST1 </opcode>
+    <opcode> DF /mod=11 /x87=32 ; ST0 ST2 </opcode>
+    <opcode> DF /mod=11 /x87=33 ; ST0 ST3 </opcode>
+    <opcode> DF /mod=11 /x87=34 ; ST0 ST4 </opcode>
+    <opcode> DF /mod=11 /x87=35 ; ST0 ST5 </opcode>
+    <opcode> DF /mod=11 /x87=36 ; ST0 ST6 </opcode>
+    <opcode> DF /mod=11 /x87=37 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcomp">
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /3 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /3 ; Mq </opcode>
+    <opcode> D8 /mod=11 /x87=18 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=19 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=1A ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=1B ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=1C ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=1D ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=1E ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=1F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcomp5">
+    <opcode> DE /mod=11 /x87=10 ; ST0 </opcode>
+    <opcode> DE /mod=11 /x87=11 ; ST1 </opcode>
+    <opcode> DE /mod=11 /x87=12 ; ST2 </opcode>
+    <opcode> DE /mod=11 /x87=13 ; ST3 </opcode>
+    <opcode> DE /mod=11 /x87=14 ; ST4 </opcode>
+    <opcode> DE /mod=11 /x87=15 ; ST5 </opcode>
+    <opcode> DE /mod=11 /x87=16 ; ST6 </opcode>
+    <opcode> DE /mod=11 /x87=17 ; ST7 </opcode>
+    <class> X87 UNDOC </class>
+  </instruction>
+
+  <instruction mnemonic="fcompp">
+    <opcode> DE /mod=11 /x87=19 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fcos">
+    <opcode> D9 /mod=11 /x87=3F ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fdecstp">
+    <opcode> D9 /mod=11 /x87=36 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fdiv">
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /6 ; Mq </opcode>
+    <opcode> DC /mod=11 /x87=38 ; ST0 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=39 ; ST1 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=3A ; ST2 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=3B ; ST3 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=3C ; ST4 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=3D ; ST5 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=3E ; ST6 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=3F ; ST7 ST0 </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /6 ; Md </opcode>
+    <opcode> D8 /mod=11 /x87=30 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=31 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=32 ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=33 ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=34 ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=35 ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=36 ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=37 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fdivp">
+    <opcode> DE /mod=11 /x87=38 ; ST0 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=39 ; ST1 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=3A ; ST2 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=3B ; ST3 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=3C ; ST4 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=3D ; ST5 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=3E ; ST6 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=3F ; ST7 ST0 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fdivr">
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /7 ; Mq </opcode>
+    <opcode> DC /mod=11 /x87=30 ; ST0 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=31 ; ST1 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=32 ; ST2 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=33 ; ST3 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=34 ; ST4 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=35 ; ST5 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=36 ; ST6 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=37 ; ST7 ST0 </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /7 ; Md </opcode>
+    <opcode> D8 /mod=11 /x87=38 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=39 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=3A ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=3B ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=3C ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=3D ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=3E ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=3F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fdivrp">
+    <opcode> DE /mod=11 /x87=30 ; ST0 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=31 ; ST1 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=32 ; ST2 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=33 ; ST3 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=34 ; ST4 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=35 ; ST5 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=36 ; ST6 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=37 ; ST7 ST0 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="femms">
+    <opcode> 0f 0e ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="ffree">
+    <opcode> DD /mod=11 /x87=00 ; ST0 </opcode>
+    <opcode> DD /mod=11 /x87=01 ; ST1 </opcode>
+    <opcode> DD /mod=11 /x87=02 ; ST2 </opcode>
+    <opcode> DD /mod=11 /x87=03 ; ST3 </opcode>
+    <opcode> DD /mod=11 /x87=04 ; ST4 </opcode>
+    <opcode> DD /mod=11 /x87=05 ; ST5 </opcode>
+    <opcode> DD /mod=11 /x87=06 ; ST6 </opcode>
+    <opcode> DD /mod=11 /x87=07 ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="ffreep">
+    <opcode> DF /mod=11 /x87=00 ; ST0 </opcode>
+    <opcode> DF /mod=11 /x87=01 ; ST1 </opcode>
+    <opcode> DF /mod=11 /x87=02 ; ST2 </opcode>
+    <opcode> DF /mod=11 /x87=03 ; ST3 </opcode>
+    <opcode> DF /mod=11 /x87=04 ; ST4 </opcode>
+    <opcode> DF /mod=11 /x87=05 ; ST5 </opcode>
+    <opcode> DF /mod=11 /x87=06 ; ST6 </opcode>
+    <opcode> DF /mod=11 /x87=07 ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="ficom">
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /2 ; Mw </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /2 ; Md </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="ficomp">
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /3 ; Mw </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /3 ; Md </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fild">
+    <opcode cast="1"> aso rexr rexx rexb ; DF /mod=!11 /0 ; Mw </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DF /mod=!11 /5 ; Mq </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DB /mod=!11 /0 ; Md </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fncstp">
+    <opcode> D9 /mod=11 /x87=37 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fninit">
+    <opcode> DB /mod=11 /x87=23 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fiadd">
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /0 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /0 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fidivr">
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /7 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /7 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fidiv">
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /6 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /6 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fisub">
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /4 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /4 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fisubr">
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /5 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /5 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fist">
+    <opcode cast="1"> aso rexr rexx rexb ; DF /mod=!11 /2 ; Mw </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DB /mod=!11 /2 ; Md </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fistp">
+    <opcode cast="1"> aso rexr rexx rexb ; DF /mod=!11 /3 ; Mw </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DF /mod=!11 /7 ; Mq </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DB /mod=!11 /3 ; Md </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fisttp">
+    <opcode cast="1"> aso rexr rexx rexb ; DB /mod=!11 /1 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DD /mod=!11 /1 ; Mq </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DF /mod=!11 /1 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fld">
+    <opcode cast="1"> aso rexr rexx rexb ; DB /mod=!11 /5 ; Mt </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DD /mod=!11 /0 ; Mq </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; D9 /mod=!11 /0 ; Md </opcode>
+    <opcode> D9 /mod=11 /x87=00 ; ST0 ST0 </opcode>
+    <opcode> D9 /mod=11 /x87=01 ; ST0 ST1 </opcode>
+    <opcode> D9 /mod=11 /x87=02 ; ST0 ST2 </opcode>
+    <opcode> D9 /mod=11 /x87=03 ; ST0 ST3 </opcode>
+    <opcode> D9 /mod=11 /x87=04 ; ST0 ST4 </opcode>
+    <opcode> D9 /mod=11 /x87=05 ; ST0 ST5 </opcode>
+    <opcode> D9 /mod=11 /x87=06 ; ST0 ST6 </opcode>
+    <opcode> D9 /mod=11 /x87=07 ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fld1">
+    <opcode> D9 /mod=11 /x87=28 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldl2t">
+    <opcode> D9 /mod=11 /x87=29 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldl2e">
+    <opcode> D9 /mod=11 /x87=2A ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldlpi">
+    <opcode> D9 /mod=11 /x87=2B ;</opcode>
+     <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldlg2">
+    <opcode> D9 /mod=11 /x87=2C ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldln2">
+    <opcode> D9 /mod=11 /x87=2D ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldz">
+    <opcode> D9 /mod=11 /x87=2E ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldcw">
+    <opcode cast="1"> aso rexr rexx rexb ; D9 /mod=!11 /5 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fldenv">
+    <opcode> aso rexr rexx rexb ; D9 /mod=!11 /4 ; M </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fmul">
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /1 ; Mq </opcode>
+    <opcode> DC /mod=11 /x87=08 ; ST0 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=09 ; ST1 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=0A ; ST2 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=0B ; ST3 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=0C ; ST4 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=0D ; ST5 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=0E ; ST6 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=0F ; ST7 ST0 </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /1 ; Md </opcode>
+    <opcode> D8 /mod=11 /x87=08 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=09 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=0A ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=0B ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=0C ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=0D ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=0E ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=0F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fmulp">
+    <opcode> DE /mod=11 /x87=08 ; ST0 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=09 ; ST1 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=0A ; ST2 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=0B ; ST3 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=0C ; ST4 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=0D ; ST5 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=0E ; ST6 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=0F ; ST7 ST0 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fimul">
+    <opcode cast="1"> aso rexr rexx rexb ; DA /mod=!11 /1 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DE /mod=!11 /1 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fnop">
+    <opcode> D9 /mod=11 /x87=10 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fpatan">
+    <opcode> D9 /mod=11 /x87=33 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fprem">
+    <opcode> D9 /mod=11 /x87=38 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fprem1">
+    <opcode> D9 /mod=11 /x87=35 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fptan">
+    <opcode> D9 /mod=11 /x87=32 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="frndint">
+    <opcode> D9 /mod=11 /x87=3C ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="frstor">
+    <opcode> aso rexr rexx rexb ; DD /mod=!11 /4 ; M </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fnsave">
+    <opcode> aso rexr rexx rexb ; DD /mod=!11 /6 ; M </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fscale">
+    <opcode> D9 /mod=11 /x87=3D ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fsin">
+    <opcode> D9 /mod=11 /x87=3E ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fsincos">
+    <opcode> D9 /mod=11 /x87=3B ;  </opcode>
+   <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fsqrt">
+    <opcode> D9 /mod=11 /x87=3A ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fstp">
+    <opcode cast="1"> aso rexr rexx rexb ; DB /mod=!11 /7 ; Mt </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DD /mod=!11 /3 ; Mq </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; D9 /mod=!11 /3 ; Md </opcode>
+    <opcode> DD /mod=11 /x87=18 ; ST0 </opcode>
+    <opcode> DD /mod=11 /x87=19 ; ST1 </opcode>
+    <opcode> DD /mod=11 /x87=1A ; ST2 </opcode>
+    <opcode> DD /mod=11 /x87=1B ; ST3 </opcode>
+    <opcode> DD /mod=11 /x87=1C ; ST4 </opcode>
+    <opcode> DD /mod=11 /x87=1D ; ST5 </opcode>
+    <opcode> DD /mod=11 /x87=1E ; ST6 </opcode>
+    <opcode> DD /mod=11 /x87=1F ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fstp1">
+    <opcode> D9 /mod=11 /x87=18 ; ST0 </opcode>
+    <opcode> D9 /mod=11 /x87=19 ; ST1 </opcode>
+    <opcode> D9 /mod=11 /x87=1A ; ST2 </opcode>
+    <opcode> D9 /mod=11 /x87=1B ; ST3 </opcode>
+    <opcode> D9 /mod=11 /x87=1C ; ST4 </opcode>
+    <opcode> D9 /mod=11 /x87=1D ; ST5 </opcode>
+    <opcode> D9 /mod=11 /x87=1E ; ST6 </opcode>
+    <opcode> D9 /mod=11 /x87=1F ; ST7 </opcode>
+  </instruction>
+
+  <instruction mnemonic="fstp8">
+    <opcode> DF /mod=11 /x87=10 ; ST0 </opcode>
+    <opcode> DF /mod=11 /x87=11 ; ST1 </opcode>
+    <opcode> DF /mod=11 /x87=12 ; ST2 </opcode>
+    <opcode> DF /mod=11 /x87=13 ; ST3 </opcode>
+    <opcode> DF /mod=11 /x87=14 ; ST4 </opcode>
+    <opcode> DF /mod=11 /x87=15 ; ST5 </opcode>
+    <opcode> DF /mod=11 /x87=16 ; ST6 </opcode>
+    <opcode> DF /mod=11 /x87=17 ; ST7 </opcode>
+  </instruction>
+
+  <instruction mnemonic="fstp9">
+    <opcode> DF /mod=11 /x87=18 ; ST0 </opcode>
+    <opcode> DF /mod=11 /x87=19 ; ST1 </opcode>
+    <opcode> DF /mod=11 /x87=1A ; ST2 </opcode>
+    <opcode> DF /mod=11 /x87=1B ; ST3 </opcode>
+    <opcode> DF /mod=11 /x87=1C ; ST4 </opcode>
+    <opcode> DF /mod=11 /x87=1D ; ST5 </opcode>
+    <opcode> DF /mod=11 /x87=1E ; ST6 </opcode>
+    <opcode> DF /mod=11 /x87=1F ; ST7 </opcode>
+  </instruction>
+
+  <instruction mnemonic="fst">
+    <opcode cast="1"> aso rexr rexx rexb ; D9 /mod=!11 /2 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DD /mod=!11 /2 ; Mq </opcode>
+    <opcode> DD /mod=11 /x87=10 ; ST0 </opcode>
+    <opcode> DD /mod=11 /x87=11 ; ST1 </opcode>
+    <opcode> DD /mod=11 /x87=12 ; ST2 </opcode>
+    <opcode> DD /mod=11 /x87=13 ; ST3 </opcode>
+    <opcode> DD /mod=11 /x87=14 ; ST4 </opcode>
+    <opcode> DD /mod=11 /x87=15 ; ST5 </opcode>
+    <opcode> DD /mod=11 /x87=16 ; ST6 </opcode>
+    <opcode> DD /mod=11 /x87=17 ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fnstcw">
+    <opcode cast="1"> aso rexr rexx rexb ; D9 /mod=!11 /7 ; Mw </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fnstenv">
+    <opcode> aso rexr rexx rexb ; D9 /mod=!11 /6 ; M </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fnstsw">
+    <opcode cast="1"> aso rexr rexx rexb ; DD /mod=!11 /7 ; Mw </opcode>
+    <opcode> DF /mod=11 /x87=20 ; AX </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fsub">
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /4 ; Md </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /4 ; Mq </opcode>
+    <opcode> D8 /mod=11 /x87=20 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=21 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=22 ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=23 ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=24 ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=25 ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=26 ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=27 ; ST0 ST7 </opcode>
+    <opcode> DC /mod=11 /x87=28 ; ST0 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=29 ; ST1 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=2A ; ST2 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=2B ; ST3 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=2C ; ST4 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=2D ; ST5 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=2E ; ST6 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=2F ; ST7 ST0 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fsubp">
+    <opcode> DE /mod=11 /x87=28 ; ST0 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=29 ; ST1 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=2A ; ST2 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=2B ; ST3 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=2C ; ST4 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=2D ; ST5 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=2E ; ST6 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=2F ; ST7 ST0 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fsubr">
+    <opcode cast="1"> aso rexr rexx rexb ; DC /mod=!11 /5 ; Mq </opcode>
+    <opcode> D8 /mod=11 /x87=28 ; ST0 ST0 </opcode>
+    <opcode> D8 /mod=11 /x87=29 ; ST0 ST1 </opcode>
+    <opcode> D8 /mod=11 /x87=2A ; ST0 ST2 </opcode>
+    <opcode> D8 /mod=11 /x87=2B ; ST0 ST3 </opcode>
+    <opcode> D8 /mod=11 /x87=2C ; ST0 ST4 </opcode>
+    <opcode> D8 /mod=11 /x87=2D ; ST0 ST5 </opcode>
+    <opcode> D8 /mod=11 /x87=2E ; ST0 ST6 </opcode>
+    <opcode> D8 /mod=11 /x87=2F ; ST0 ST7 </opcode>
+    <opcode> DC /mod=11 /x87=20 ; ST0 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=21 ; ST1 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=22 ; ST2 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=23 ; ST3 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=24 ; ST4 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=25 ; ST5 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=26 ; ST6 ST0 </opcode>
+    <opcode> DC /mod=11 /x87=27 ; ST7 ST0 </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; D8 /mod=!11 /5 ; Md </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fsubrp">
+    <opcode> DE /mod=11 /x87=20 ; ST0 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=21 ; ST1 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=22 ; ST2 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=23 ; ST3 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=24 ; ST4 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=25 ; ST5 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=26 ; ST6 ST0 </opcode>
+    <opcode> DE /mod=11 /x87=27 ; ST7 ST0 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="ftst">
+    <opcode> D9 /mod=11 /x87=24 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fucom">
+    <opcode> DD /mod=11 /x87=20 ; ST0 </opcode>
+    <opcode> DD /mod=11 /x87=21 ; ST1 </opcode>
+    <opcode> DD /mod=11 /x87=22 ; ST2 </opcode>
+    <opcode> DD /mod=11 /x87=23 ; ST3 </opcode>
+    <opcode> DD /mod=11 /x87=24 ; ST4 </opcode>
+    <opcode> DD /mod=11 /x87=25 ; ST5 </opcode>
+    <opcode> DD /mod=11 /x87=26 ; ST6 </opcode>
+    <opcode> DD /mod=11 /x87=27 ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fucomp">
+    <opcode> DD /mod=11 /x87=28 ; ST0 </opcode>
+    <opcode> DD /mod=11 /x87=29 ; ST1 </opcode>
+    <opcode> DD /mod=11 /x87=2A ; ST2 </opcode>
+    <opcode> DD /mod=11 /x87=2B ; ST3 </opcode>
+    <opcode> DD /mod=11 /x87=2C ; ST4 </opcode>
+    <opcode> DD /mod=11 /x87=2D ; ST5 </opcode>
+    <opcode> DD /mod=11 /x87=2E ; ST6 </opcode>
+    <opcode> DD /mod=11 /x87=2F ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fucompp">
+    <opcode> DA /mod=11 /x87=29 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fxam">
+    <opcode> D9 /mod=11 /x87=25 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fxch">
+    <opcode> D9 /mod=11 /x87=08 ; ST0 ST0 </opcode>
+    <opcode> D9 /mod=11 /x87=09 ; ST0 ST1 </opcode>
+    <opcode> D9 /mod=11 /x87=0A ; ST0 ST2 </opcode>
+    <opcode> D9 /mod=11 /x87=0B ; ST0 ST3 </opcode>
+    <opcode> D9 /mod=11 /x87=0C ; ST0 ST4 </opcode>
+    <opcode> D9 /mod=11 /x87=0D ; ST0 ST5 </opcode>
+    <opcode> D9 /mod=11 /x87=0E ; ST0 ST6 </opcode>
+    <opcode> D9 /mod=11 /x87=0F ; ST0 ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fxch4">
+    <opcode> DD /mod=11 /x87=08 ; ST0 </opcode>
+    <opcode> DD /mod=11 /x87=09 ; ST1 </opcode>
+    <opcode> DD /mod=11 /x87=0A ; ST2 </opcode>
+    <opcode> DD /mod=11 /x87=0B ; ST3 </opcode>
+    <opcode> DD /mod=11 /x87=0C ; ST4 </opcode>
+    <opcode> DD /mod=11 /x87=0D ; ST5 </opcode>
+    <opcode> DD /mod=11 /x87=0E ; ST6 </opcode>
+    <opcode> DD /mod=11 /x87=0F ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fxch7">
+    <opcode> DF /mod=11 /x87=08 ; ST0 </opcode>
+    <opcode> DF /mod=11 /x87=09 ; ST1 </opcode>
+    <opcode> DF /mod=11 /x87=0A ; ST2 </opcode>
+    <opcode> DF /mod=11 /x87=0B ; ST3 </opcode>
+    <opcode> DF /mod=11 /x87=0C ; ST4 </opcode>
+    <opcode> DF /mod=11 /x87=0D ; ST5 </opcode>
+    <opcode> DF /mod=11 /x87=0E ; ST6 </opcode>
+    <opcode> DF /mod=11 /x87=0F ; ST7 </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fxrstor">
+    <opcode> aso rexw rexr rexx rexb ; 0F AE /1 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="fxsave">
+    <opcode> aso rexw rexr rexx rexb ; 0F AE /0 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="fpxtract">
+    <opcode> D9 /mod=11 /x87=34 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fyl2x">
+    <opcode> D9 /mod=11 /x87=31 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="fyl2xp1">
+    <opcode> D9 /mod=11 /x87=39 ; </opcode>
+    <class> X87 </class>
+  </instruction>
+
+  <instruction mnemonic="haddpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 7c ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="haddps">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 7c ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="hlt">
+    <opcode> f4 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="hsubpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 7d ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="hsubps">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 7d ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="idiv">
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /7 ; Ev </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /7 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="in">
+    <opcode> ; e4 ; AL Ib </opcode>
+    <opcode> oso ; e5 ; eAX Ib </opcode>
+    <opcode> ec ; AL DX </opcode>
+    <opcode> oso ; ed ; eAX DX </opcode>
+  </instruction>
+
+  <instruction mnemonic="imul">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f af ; Gv Ev </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /5 ; Eb </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /5 ; Ev </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 69 ; Gv Ev Iz </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 6b ; Gv Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="inc">
+    <opcode> oso ; 40 ; eAX </opcode>
+    <opcode> oso ; 41 ; eCX </opcode>
+    <opcode> oso ; 42 ; eDX </opcode>
+    <opcode> oso ; 43 ; eBX </opcode>
+    <opcode> oso ; 44 ; eSP </opcode>
+    <opcode> oso ; 45 ; eBP </opcode>
+    <opcode> oso ; 46 ; eSI </opcode>
+    <opcode> oso ; 47 ; eDI </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; FF /0 ; Ev </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; FE /0 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="insb">
+    <opcode> ; 6c ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="insw">
+    <opcode> oso ; 6d /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="insd">
+    <opcode> oso ; 6d /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="int1">
+    <opcode> f1 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="int3">
+    <opcode> ; cc ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="int">
+    <opcode> ; cd ; Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="into">
+    <opcode mode="inv64"> ; ce ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="invd">
+    <opcode> 0f 08 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="invept">
+    <opcode> sse66 0f 38 80 /M32 ; Gd Mo </opcode>
+    <opcode> sse66 0f 38 80 /M64 ; Gq Mo </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="invlpg">
+    <opcode> aso rexr rexx rexb ; 0F 01 /7 /mod=!11 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="invlpga">
+    <opcode> 0F 01 /3 /mod=11 /rm=7 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="invvpid">
+    <opcode> sse66 0f 38 81 /M32 ; Gd Mo </opcode>
+    <opcode> sse66 0f 38 81 /M64 ; Gq Mo </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="iretw">
+    <opcode> oso rexw ; cf /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="iretd">
+    <opcode> oso rexw ; cf /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="iretq">
+    <opcode> oso rexw ; cf /O64 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="jo">
+    <opcode> ; 70 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 80 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jno">
+    <opcode> ; 71 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 81 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jb">
+    <opcode> ; 72 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 82 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jae">
+    <opcode> ; 73 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 83 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jz">
+    <opcode> ; 74 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 84 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jnz">
+    <opcode> ; 75 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 85 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jbe">
+    <opcode> ; 76 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 86 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="ja">
+    <opcode> ; 77 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 87 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="js">
+    <opcode> ; 78 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 88 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jns">
+    <opcode> ; 79 ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 89 ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jp">
+    <opcode> ; 7a ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 8a ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jnp">
+    <opcode> ; 7b ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 8b ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jl">
+    <opcode> ; 7c ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 8c ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jge">
+    <opcode> ; 7d ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 8d ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jle">
+    <opcode> ; 7e ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 8e ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jg">
+    <opcode> ; 7f ; Jb </opcode>
+    <opcode mode="def64 depM" cast="1"> oso ; 0f 8f ; Jz </opcode>
+  </instruction>
+
+  <instruction mnemonic="jcxz">
+    <opcode> aso ; e3 /A16 ; Jb </opcode>
+  </instruction>
+
+  <instruction mnemonic="jecxz">
+    <opcode> aso ; e3 /A32 ; Jb </opcode>
+  </instruction>
+
+  <instruction mnemonic="jrcxz">
+    <opcode> aso ; e3 /A64 ; Jb </opcode>
+  </instruction>
+
+  <instruction mnemonic="jmp">
+    <opcode mode="def64 depM" cast="1"> aso oso rexw rexr rexx rexb ; FF /4 ; Ev </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; FF /5 ; Ep </opcode>
+    <opcode mode="def64 depM"> oso ; e9 ; Jz </opcode>
+    <opcode mode="inv64"> ea ; Ap </opcode>
+    <opcode> eb ; Jb </opcode>
+  </instruction>
+
+  <instruction mnemonic="lahf">
+    <opcode> ; 9f ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="lar">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 02 ; Gv Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="lddqu">
+    <opcode> aso rexr rexx rexb ; ssef2 0f f0 ; V M </opcode>
+  </instruction>
+
+  <instruction mnemonic="ldmxcsr">
+    <opcode> aso rexw rexr rexx rexb ; 0F AE /2 ; Md </opcode>
+  </instruction>
+
+  <instruction mnemonic="lds">
+    <opcode mode="inv64"> aso oso ; c5 ; Gv M </opcode>
+  </instruction>
+
+  <instruction mnemonic="lea">
+    <opcode> aso oso rexw rexr rexx rexb ; 8d ; Gv M </opcode>
+  </instruction>
+
+  <instruction mnemonic="les">
+    <opcode mode="inv64"> aso oso ; c4 ; Gv M </opcode>
+  </instruction>
+
+  <instruction mnemonic="lfs">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f b4 ; Gz M </opcode>
+  </instruction>
+
+  <instruction mnemonic="lgs">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f b5 ; Gz M </opcode>
+  </instruction>
+
+  <instruction mnemonic="lidt">
+    <opcode> aso rexr rexx rexb ; 0F 01 /3 /mod=!11 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="lss">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f b2 ; Gz M </opcode>
+  </instruction>
+
+  <instruction mnemonic="leave">
+    <opcode> ; c9 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="lfence">
+    <opcode> 0F AE /5 /mod=11 /rm=0 ; </opcode>
+    <opcode> 0F AE /5 /mod=11 /rm=1 ; </opcode>
+    <opcode> 0F AE /5 /mod=11 /rm=2 ; </opcode>
+    <opcode> 0F AE /5 /mod=11 /rm=3 ; </opcode>
+    <opcode> 0F AE /5 /mod=11 /rm=4 ; </opcode>
+    <opcode> 0F AE /5 /mod=11 /rm=5 ; </opcode>
+    <opcode> 0F AE /5 /mod=11 /rm=6 ; </opcode>
+    <opcode> 0F AE /5 /mod=11 /rm=7 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="lgdt">
+    <opcode> aso rexr rexx rexb ; 0F 01 /2 /mod=!11 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="lldt">
+    <opcode> aso rexr rexx rexb ; 0F 00 /2 ; Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="lmsw">
+    <opcode> aso rexr rexx rexb ; 0F 01 /6 /mod=!11 ; Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="lock">
+    <opcode> f0 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="lodsb">
+    <opcode imp_addr="1"> ; ac ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="lodsw">
+    <opcode imp_addr="1"> oso rexw ; ad /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="lodsd">
+    <opcode imp_addr="1"> oso rexw ; ad /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="lodsq">
+    <opcode imp_addr="1"> oso rexw ; ad /O64 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="loopnz">
+    <opcode> ; e0 ; Jb </opcode>
+  </instruction>
+
+  <instruction mnemonic="loope">
+    <opcode> ; e1 ; Jb </opcode>
+  </instruction>
+
+  <instruction mnemonic="loop">
+    <opcode> ; e2 ; Jb </opcode>
+    <mode> def64 depM </mode>
+  </instruction>
+
+  <instruction mnemonic="lsl">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f 03 ; Gv Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="ltr">
+    <opcode> aso rexr rexx rexb ; 0F 00 /3 ; Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="maskmovq">
+    <opcode> aso rexr rexx rexb ; 0f f7 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f f7 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="maxpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 5f ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="maxps">
+    <opcode> aso rexr rexx rexb ; 0f 5f ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="maxsd">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 5f ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="maxss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 5f ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="mfence">
+    <opcode> 0F AE /6 /mod=11 /rm=0 ; </opcode>
+    <opcode> 0F AE /6 /mod=11 /rm=1 ; </opcode>
+    <opcode> 0F AE /6 /mod=11 /rm=2 ; </opcode>
+    <opcode> 0F AE /6 /mod=11 /rm=3 ; </opcode>
+    <opcode> 0F AE /6 /mod=11 /rm=4 ; </opcode>
+    <opcode> 0F AE /6 /mod=11 /rm=5 ; </opcode>
+    <opcode> 0F AE /6 /mod=11 /rm=6 ; </opcode>
+    <opcode> 0F AE /6 /mod=11 /rm=7 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="minpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 5d ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="minps">
+    <opcode> aso rexr rexx rexb ; 0f 5d ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="minsd">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 5d ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="minss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 5d ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="monitor">
+    <opcode> 0F 01 /1 /mod=11 /rm=0 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="montmul">
+    <opcode> ; 0f a6 /mod=11 /rm=0 /0 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="mov">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C6 /0 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C7 /0 ; Ev Iz </opcode>
+    <opcode> aso rexr rexx rexb ; 88 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 89 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 8a ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 8b ; Gv Ev </opcode>
+    <opcode> aso oso rexr rexx rexb ; 8c ; Ev S </opcode>
+    <opcode> aso oso rexr rexx rexb ; 8e ; S Ev </opcode>
+    <opcode> a0 ; AL Ob </opcode>
+    <opcode> aso oso rexw ; a1 ; rAX Ov </opcode>
+    <opcode> a2 ; Ob AL </opcode>
+    <opcode> aso oso rexw ; a3 ; Ov rAX </opcode>
+    <opcode> rexb ; b0 ; ALr8b Ib </opcode>
+    <opcode> rexb ; b1 ; CLr9b Ib </opcode>
+    <opcode> rexb ; b2 ; DLr10b Ib </opcode>
+    <opcode> rexb ; b3 ; BLr11b Ib </opcode>
+    <opcode> rexb ; b4 ; AHr12b Ib </opcode>
+    <opcode> rexb ; b5 ; CHr13b Ib </opcode>
+    <opcode> rexb ; b6 ; DHr14b Ib </opcode>
+    <opcode> rexb ; b7 ; BHr15b Ib </opcode>
+    <opcode> oso rexw rexb ; b8 ; rAXr8 Iv </opcode>
+    <opcode> oso rexw rexb ; b9 ; rCXr9 Iv </opcode>
+    <opcode> oso rexw rexb ; ba ; rDXr10 Iv </opcode>
+    <opcode> oso rexw rexb ; bb ; rBXr11 Iv </opcode>
+    <opcode> oso rexw rexb ; bc ; rSPr12 Iv </opcode>
+    <opcode> oso rexw rexb ; bd ; rBPr13 Iv </opcode>
+    <opcode> oso rexw rexb ; be ; rSIr14 Iv </opcode>
+    <opcode> oso rexw rexb ; bf ; rDIr15 Iv </opcode>
+    <opcode> rexr ; 0f 20 ; R C </opcode>
+    <opcode> rexr ; 0f 21 ; R D </opcode>
+    <opcode> rexr ; 0f 22 ; C R </opcode>
+    <opcode> rexr ; 0f 23 ; D R </opcode>
+  </instruction>
+
+  <instruction mnemonic="movapd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 28 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f 29 ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movaps">
+    <opcode> aso rexr rexx rexb ; 0f 28 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 29 ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movd">
+    <opcode cast="2"> aso rexw rexr rexx rexb ; sse66 0f 6e ; V Ex </opcode>
+    <opcode cast="2"> aso rexr rexx rexb ; 0f 6e ; P Ex </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; sse66 0f 7e ; Ex V </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 0f 7e ; Ex P </opcode>
+  </instruction>
+
+  <instruction mnemonic="movddup">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 12 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="movdqa">
+    <opcode> aso rexr rexx rexb ; sse66 0f 7f ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movdqu">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 6f ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; ssef3 0f 7f ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movdq2q">
+    <opcode> aso rexb ; ssef2 0f d6 ; P VR </opcode>
+  </instruction>
+
+  <instruction mnemonic="movhpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 16 ; V M </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f 17 ; M V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movhps">
+    <opcode> aso rexr rexx rexb ; 0f 16 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 17 ; M V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movlhps"></instruction>
+
+  <instruction mnemonic="movlpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 12 ; V M </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f 13 ; M V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movlps">
+    <opcode> aso rexr rexx rexb ; 0f 12 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 13 ; M V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movhlps"></instruction>
+
+  <instruction mnemonic="movmskpd">
+    <opcode> oso rexr rexb ; sse66 0f 50 ; Gd VR </opcode>
+  </instruction>
+
+  <instruction mnemonic="movmskps">
+    <opcode> oso rexr rexb ; 0f 50 ; Gd VR </opcode>
+  </instruction>
+
+  <instruction mnemonic="movntdq">
+    <opcode> aso rexr rexx rexb ; sse66 0f e7 ; M V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movnti">
+    <opcode> aso rexw rexr rexx rexb ; 0f c3 ; M Gvw </opcode>
+  </instruction>
+
+  <instruction mnemonic="movntpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 2b ; M V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movntps">
+    <opcode> aso rexr rexx rexb ; 0f 2b ; M V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movntq">
+    <opcode> 0f e7 ; M P </opcode>
+  </instruction>
+
+  <instruction mnemonic="movq">
+    <opcode> aso rexr rexx rexb ; 0f 6f ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d6 ; W V </opcode>
+    <opcode> aso rexr rexx rexb ; ssef3 0f 7e ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 7f ; Q P </opcode>
+  </instruction>
+
+  <instruction mnemonic="movqa">
+    <opcode> aso rexr rexx rexb ; sse66 0f 6f ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="movq2dq">
+    <opcode> aso ; ssef3 0f d6 ; V PR </opcode>
+  </instruction>
+
+  <instruction mnemonic="movsb">
+    <opcode imp_addr="1"> a4 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="movsw">
+    <opcode imp_addr="1"> oso rexw ; a5 /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="movsd">
+    <opcode imp_addr="1"> oso rexw ; a5 /O32 ; </opcode>
+    <opcode> aso rexr rexx rexb ; ssef2 0f 10 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; ssef2 0f 11 ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movsq">
+    <opcode imp_addr="1"> oso rexw ; a5 /O64 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="movsldup">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 12 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="movshdup">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 16 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="movss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 10 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; ssef3 0f 11 ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movsx">
+    <opcode cast="2"> aso oso rexw rexr rexx rexb ; 0f be ; Gv Eb </opcode>
+    <opcode cast="2"> aso oso rexw rexr rexx rexb ; 0f bf ; Gv Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="movupd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 10 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f 11 ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movups">
+    <opcode> aso rexr rexx rexb ; 0f 10 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 11 ; W V </opcode>
+  </instruction>
+
+  <instruction mnemonic="movzx">
+    <opcode cast="2"> aso oso rexw rexr rexx rexb ; 0f b6 ; Gv Eb </opcode>
+    <opcode cast="2"> aso oso rexw rexr rexx rexb ; 0f b7 ; Gv Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="mul">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /4 ; Eb </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /4 ; Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="mulpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 59 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="mulps">
+    <opcode> aso rexr rexx rexb ; 0f 59 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="mulsd">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 59 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="mulss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 59 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="mwait">
+    <opcode> 0F 01 /1 /mod=11 /rm=1 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="neg">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /3 ; Eb </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /3 ; Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="nop">
+    <opcode> ; 90 ; </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 19 ; M </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 1a ; M </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 1b ; M </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 1c ; M </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 1d ; M </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 1e ; M </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 1f ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="not">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /2 ; Eb </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /2 ; Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="or">
+    <opcode> aso rexr rexx rexb ; 08 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 09 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 0a ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 0b ; Gv Ev </opcode>
+    <opcode> ; 0c ; AL Ib </opcode>
+    <opcode> oso rexw ; 0d ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 80 /1 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /1 ; Ev Iz </opcode>
+    <opcode mode="inv64" cast="1"> aso rexr rexx rexb ; 82 /1 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /1 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="orpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 56 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="orps">
+    <opcode> aso rexr rexx rexb ; 0f 56 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="out">
+    <opcode> ; e6 ; Ib AL </opcode>
+    <opcode> oso ; e7 ; Ib eAX </opcode>
+    <opcode> ; ee ; DX AL </opcode>
+    <opcode> oso ; ef ; DX eAX </opcode>
+  </instruction>
+
+  <instruction mnemonic="outsb">
+    <opcode> 6e ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="outsw">
+    <opcode> oso ; 6f /o16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="outsd">
+    <opcode> oso ; 6f /o32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="outsq">
+    <opcode> oso ; 6f /o64; </opcode>
+  </instruction>
+
+  <instruction mnemonic="packsswb">
+    <opcode> aso rexr rexx rexb ; sse66 0f 63 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 63 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="packssdw">
+    <opcode> aso rexr rexx rexb ; sse66 0f 6b ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 6b ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="packuswb">
+    <opcode> aso rexr rexx rexb ; sse66 0f 67 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 67 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="paddb">
+    <opcode> aso rexr rexx rexb ; sse66 0f fc ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f fc ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="paddw">
+    <opcode> aso rexr rexx rexb ; 0f fd ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f fd ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="paddq">
+    <opcode> aso rexr rexx rexb ; 0f d4 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d4 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="paddsb">
+    <opcode> aso rexr rexx rexb ; 0f ec ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f ec ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="paddsw">
+    <opcode> aso rexr rexx rexb ; 0f ed ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f ed ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="paddusb">
+    <opcode> aso rexr rexx rexb ; 0f dc ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="paddusw">
+    <opcode> aso rexr rexx rexb ; 0f dd ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pand">
+    <opcode> aso rexr rexx rexb ; sse66 0f db ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f db ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pandn">
+    <opcode> aso rexr rexx rexb ; sse66 0f df ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f df ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pause">
+    <opcode> ; f3 90 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="pavgb">
+    <opcode> aso rexr rexx rexb ; sse66 0f e0 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f e0 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pavgw">
+    <opcode> aso rexr rexx rexb ; sse66 0f e3 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f e3 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pcmpeqb">
+    <opcode> aso rexr rexx rexb ; 0f 74 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f 74 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pcmpeqw">
+    <opcode> aso rexr rexx rexb ; 0f 75 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f 75 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pcmpeqd">
+    <opcode> aso rexr rexx rexb ; 0f 76 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f 76 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pcmpgtb">
+    <opcode> aso rexr rexx rexb ; sse66 0f 64 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 64 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pcmpgtw">
+    <opcode> aso rexr rexx rexb ; sse66 0f 65 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 65 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pcmpgtd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 66 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 66 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pextrw">
+    <opcode> aso rexr rexb ; sse66 0f c5 ; Gd VR Ib </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 0f c5 ; Gd PR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pinsrw">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f c4 ; P Ew Ib </opcode>
+    <opcode> aso rexw rexr rexx rexb ; sse66 0f c4 ; V Ew Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmaddwd">
+    <opcode> aso rexr rexx rexb ; 0f f5 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f f5 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmaxsw">
+    <opcode> aso rexr rexx rexb ; sse66 0f ee ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f ee ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmaxub">
+    <opcode> aso rexr rexx rexb ; 0f de ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f de ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pminsw">
+    <opcode> aso rexr rexx rexb ; sse66 0f ea ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f ea ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pminub">
+    <opcode> aso rexr rexx rexb ; sse66 0f da ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f da ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmovmskb">
+    <opcode> rexr rexb ; sse66 0f d7 ; Gd VR </opcode>
+    <opcode> oso rexr rexb ; 0f d7 ; Gd PR </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmulhuw">
+    <opcode> aso rexr rexx rexb ; 0f e4 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f e4 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmulhw">
+    <opcode> aso rexr rexx rexb ; sse66 0f e5 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f e5 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmullw">
+    <opcode> aso rexr rexx rexb ; 0f d5 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d5 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pmuludq">
+    <opcode> aso rexr rexx rexb ; 0f f4 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f f4 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pop">
+    <opcode mode="inv64"> ; 07 ; ES </opcode>
+    <opcode mode="inv64"> ; 17 ; SS </opcode>
+    <opcode mode="inv64"> ; 1f ; DS </opcode>
+    <opcode> 0f a9 ; GS </opcode>
+    <opcode> 0f a1 ; FS </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 58 ; rAXr8 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 59 ; rCXr9 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 5A ; rDXr10 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 5B ; rBXr11 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 5C ; rSPr12 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 5D ; rBPr13 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 5E ; rSIr14 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 5F ; rDIr15 </opcode>
+    <opcode mode="def64 depM" cast="1"> aso oso rexw rexr rexx rexb ; 8F /0 ; Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="popa">
+    <opcode mode="inv64"> oso ; 61 /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="popad">
+    <opcode mode="inv64"> oso ; 61 /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="popfw">
+    <opcode mode="def64 depM"> oso ; 9d /M32 /O16 ; </opcode>
+    <opcode mode="def64 depM"> oso ; 9d /M16 /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="popfd">
+    <opcode mode="def64 depM"> oso ; 9d /M16 /O32 ; </opcode>
+    <opcode mode="def64 depM"> oso ; 9d /M32 /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="popfq">
+    <opcode mode="def64 depM"> oso ; 9d /M64 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="por">
+    <opcode> aso rexr rexx rexb ; sse66 0f eb ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f eb ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="prefetch">
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /0 ; M </opcode>
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /1 ; M </opcode>
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /2 ; M </opcode>
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /3 ; M </opcode>
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /4 ; M </opcode>
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /5 ; M </opcode>
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /6 ; M </opcode>
+    <opcode> aso rexw rexr rexx rexb ; 0F 0D /7 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="prefetchnta">
+    <opcode> aso rexw rexr rexx rexb ; 0F 18 /0 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="prefetcht0">
+    <opcode> aso rexw rexr rexx rexb ; 0F 18 /1 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="prefetcht1">
+    <opcode> aso rexw rexr rexx rexb ; 0F 18 /2 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="prefetcht2">
+    <opcode> aso rexw rexr rexx rexb ; 0F 18 /3 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="psadbw">
+    <opcode> aso rexr rexx rexb ; sse66 0f f6 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f f6 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="pshufd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 70 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pshufhw">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 70 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pshuflw">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 70 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pshufw">
+    <opcode> aso rexr rexx rexb ; 0f 70 ; P Q Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pslldq">
+    <opcode> rexb ; sse66 0F 73 /7 ; VR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psllw">
+    <opcode> aso rexr rexx rexb ; sse66 0f f1 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f f1 ; P Q </opcode>
+    <opcode> rexb ; sse66 0F 71 /6 ; VR Ib </opcode>
+    <opcode> 0F 71 /6 ; PR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pslld">
+    <opcode> aso rexr rexx rexb ; sse66 0f f2 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f f2 ; P Q </opcode>
+    <opcode> rexb ; sse66 0F 72 /6 ; VR Ib </opcode>
+    <opcode> 0F 72 /6 ; PR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psllq">
+    <opcode> aso rexr rexx rexb ; sse66 0f f3 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f f3 ; P Q </opcode>
+    <opcode> rexb ; sse66 0F 73 /6 ; VR Ib </opcode>
+    <opcode> 0F 73 /6 ; PR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psraw">
+    <opcode> aso rexr rexx rexb ; 0f e1 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f e1 ; V W </opcode>
+    <opcode> rexb ; sse66 0F 71 /4 ; VR Ib </opcode>
+    <opcode> 0F 71 /4 ; PR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psrad">
+    <opcode> 0F 72 /4 ; PR Ib </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f e2 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f e2 ; P Q </opcode>
+    <opcode> rexb ; sse66 0F 72 /4 ; VR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psrlw">
+    <opcode> 0F 71 /2 ; PR Ib </opcode>
+    <opcode> aso rexr rexx rexb ; 0f d1 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d1 ; V W </opcode>
+    <opcode> rexb ; sse66 0F 71 /2 ; VR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psrld">
+    <opcode> 0F 72 /2 ; PR Ib </opcode>
+    <opcode> aso rexr rexx rexb ; 0f d2 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d2 ; V W </opcode>
+    <opcode> rexb ; sse66 0F 72 /2 ; VR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psrlq">
+    <opcode> 0F 73 /2 ; PR Ib </opcode>
+    <opcode> aso rexr rexx rexb ; 0f d3 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d3 ; V W </opcode>
+    <opcode> rexb ; sse66 0F 73 /2 ; VR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psrldq">
+    <opcode> rexb ; sse66 0F 73 /3 ; VR Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubb">
+    <opcode> aso rexr rexx rexb ; sse66 0f f8 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f f8 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubw">
+    <opcode> aso rexr rexx rexb ; sse66 0f f9 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f f9 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubd">
+    <opcode> aso rexr rexx rexb ; 0f fa ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f fa ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubq">
+    <opcode> aso rexr rexx rexb ; sse66 0f fb ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f fb ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubsb">
+    <opcode> aso rexr rexx rexb ; 0f e8 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f e8 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubsw">
+    <opcode> aso rexr rexx rexb ; 0f e9 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f e9 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubusb">
+    <opcode> aso rexr rexx rexb ; 0f d8 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d8 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f dc ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="psubusw">
+    <opcode> aso rexr rexx rexb ; 0f d9 ; P Q </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f d9 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpckhbw">
+    <opcode> aso rexr rexx rexb ; sse66 0f 68 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; sse66 0f dd ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 68 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpckhwd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 69 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 69 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpckhdq">
+    <opcode> aso rexr rexx rexb ; sse66 0f 6a ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 6a ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpckhqdq">
+    <opcode> aso rexr rexx rexb ; sse66 0f 6d ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpcklbw">
+    <opcode> aso rexr rexx rexb ; sse66 0f 60 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 60 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpcklwd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 61 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 61 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpckldq">
+    <opcode> aso rexr rexx rexb ; sse66 0f 62 ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f 62 ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="punpcklqdq">
+    <opcode> aso rexr rexx rexb ; sse66 0f 6c ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="pi2fw">
+    <opcode> ; 0f 0f /3dnow=0C ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pi2fd">
+    <opcode> ; 0f 0f /3dnow=0D ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pf2iw">
+    <opcode> ; 0f 0f /3dnow=1C ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pf2id">
+    <opcode> ; 0f 0f /3dnow=1D ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfnacc">
+    <opcode> ; 0f 0f /3dnow=8A ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfpnacc">
+    <opcode> ; 0f 0f /3dnow=8E ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfcmpge">
+    <opcode> ; 0f 0f /3dnow=90 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfmin">
+    <opcode> ; 0f 0f /3dnow=94 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfrcp">
+    <opcode> ; 0f 0f /3dnow=96 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfrsqrt">
+    <opcode> ; 0f 0f /3dnow=97 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfsub">
+    <opcode> ; 0f 0f /3dnow=9A ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfadd">
+    <opcode> ; 0f 0f /3dnow=9E ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfcmpgt">
+    <opcode> ; 0f 0f /3dnow=A0 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfmax">
+    <opcode> ; 0f 0f /3dnow=A4 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfrcpit1">
+    <opcode> ; 0f 0f /3dnow=A6 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfrspit1">
+    <opcode> ; 0f 0f /3dnow=A7 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfsubr">
+    <opcode> ; 0f 0f /3dnow=AA ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfacc">
+    <opcode> ; 0f 0f /3dnow=AE ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfcmpeq">
+    <opcode> ; 0f 0f /3dnow=B0 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfmul">
+    <opcode> ; 0f 0f /3dnow=B4 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pfrcpit2">
+    <opcode> ; 0f 0f /3dnow=B6 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pmulhrw">
+    <opcode> ; 0f 0f /3dnow=B7 ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pswapd">
+    <opcode> ; 0f 0f /3dnow=BB ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="pavgusb">
+    <opcode> ; 0f 0f /3dnow=BF ; P Q </opcode>
+  </instruction> 
+
+  <instruction mnemonic="push">
+    <opcode mode="inv64"> ; 06 ; ES </opcode>
+    <opcode mode="inv64"> ; 0e ; CS </opcode>
+    <opcode mode="inv64"> ; 16 ; SS </opcode>
+    <opcode mode="inv64"> ; 1e ; DS </opcode>
+    <opcode> ; 0f a8 ; GS </opcode>
+    <opcode> ; 0f a0 ; FS </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 50 ; rAXr8 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 51 ; rCXr9 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 52 ; rDXr10 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 53 ; rBXr11 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 54 ; rSPr12 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 55 ; rBPr13 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 56 ; rSIr14 </opcode>
+    <opcode mode="def64 depM"> oso rexb ; 57 ; rDIr15 </opcode>
+    <opcode cast="1"> oso ; 68 ; Iz </opcode>
+    <opcode mode="def64" cast="1"> aso oso rexw rexr rexx rexb ; FF /6 ; Ev </opcode>
+    <opcode> ; 6a ; Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="pusha">
+    <opcode mode="inv64"> oso ; 60 /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="pushad">
+    <opcode mode="inv64"> oso ; 60 /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="pushfw">
+    <opcode mode="def64"> oso ; 9c /M32 /O16 ; </opcode>
+    <opcode mode="def64"> oso ; 9c /M16 /O16 ; </opcode>
+    <opcode mode="def64"> oso rexw ; 9c /M64 /O16 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="pushfd">
+    <opcode mode="def64"> oso ; 9c /M16 /O32 ; </opcode>
+    <opcode mode="def64"> oso ; 9c /M32 /O32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="pushfq">
+    <opcode mode="def64"> oso rexw ; 9c /M64 /O32 ; </opcode>
+    <opcode mode="def64"> oso rexw ; 9c /M64 /O64 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="pxor">
+    <opcode> aso rexr rexx rexb ; sse66 0f ef ; V W </opcode>
+    <opcode> aso rexr rexx rexb ; 0f ef ; P Q </opcode>
+  </instruction>
+
+  <instruction mnemonic="rcl">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /2 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /2 ; Ev Ib </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /2 ; Eb I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D2 /2 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /2 ; Ev CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /2 ; Ev I1 </opcode>
+  </instruction>
+
+  <instruction mnemonic="rcr">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /3 ; Eb I1 </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /3 ; Ev Ib </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /3 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /3 ; Ev I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D2 /3 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /3 ; Ev CL </opcode>
+  </instruction>
+
+  <instruction mnemonic="rol">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /0 ; Eb Ib </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /0 ; Eb I1 </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /0 ; Ev I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D2 /0 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /0 ; Ev CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /0 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="ror">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /1 ; Eb I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /1 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /1 ; Ev Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /1 ; Ev I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D2 /1 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /1 ; Ev CL </opcode>
+  </instruction>
+
+  <instruction mnemonic="rcpps">
+    <opcode> aso rexr rexx rexb ; 0f 53 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="rcpss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 53 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="rdmsr">
+    <opcode> 0f 32 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="rdpmc">
+    <opcode> 0f 33 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="rdtsc">
+    <opcode> 0f 31 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="rdtscp">
+    <opcode> 0F 01 /7 /mod=11 /rm=1 ; </opcode>  
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="repne">
+    <opcode> f2 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="rep">
+    <opcode> f3 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="ret">
+    <opcode> ; c2 ; Iw </opcode>
+    <opcode> ; c3 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="retf">
+    <opcode> ; ca ; Iw </opcode>
+    <opcode> ; cb ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="rsm">
+    <opcode> 0f aa ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="rsqrtps">
+    <opcode> aso rexr rexx rexb ; 0f 52 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="rsqrtss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 52 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="sahf">
+    <opcode> ; 9e ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="sal">
+
+  </instruction>
+
+  <instruction mnemonic="salc">
+    <opcode mode="inv64"> ; d6 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="sar">
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /7 ; Ev I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /7 ; Eb Ib </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /7 ; Eb I1 </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /7 ; Ev Ib </opcode>
+    <opcode> aso rexw rexr rexx rexb ; D2 /7 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /7 ; Ev CL </opcode>
+  </instruction>
+
+  <instruction mnemonic="shl">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /6 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /6 ; Ev Ib </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /6 ; Eb I1 </opcode>
+    <opcode> aso rexw rexr rexx rexb ; D2 /6 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /6 ; Ev CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /4 ; Ev Ib </opcode>
+    <opcode> aso rexr rexx rexb ; D2 /4 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /4 ; Ev I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /4 ; Eb I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /4 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /4 ; Ev CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /6 ; Ev I1 </opcode>
+  </instruction>
+
+  <instruction mnemonic="shr">
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; C1 /5 ; Ev Ib </opcode>
+    <opcode> aso rexw rexr rexx rexb ; D2 /5 ; Eb CL </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D1 /5 ; Ev I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; D0 /5 ; Eb I1 </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; C0 /5 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; D3 /5 ; Ev CL </opcode>
+  </instruction>
+
+  <instruction mnemonic="sbb">
+    <opcode> aso rexr rexx rexb ; 18 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 19 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 1a ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 1b ; Gv Ev </opcode>
+    <opcode> ; 1c ; AL Ib </opcode>
+    <opcode> oso rexw ; 1d ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 80 /3 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /3 ; Ev Iz </opcode>
+    <opcode mode="inv64" cast="1"> aso rexr rexx rexb ; 82 /3 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /3 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="scasb">
+    <opcode> ; ae ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="scasw">
+    <opcode> oso rexw ; af /O16 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="scasd">
+    <opcode> oso rexw ; af /O32 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="scasq">
+    <opcode> oso rexw ; af /O64 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="seto">
+    <opcode> aso rexr rexx rexb ; 0f 90 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setno">
+    <opcode> aso rexr rexx rexb ; 0f 91 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setb">
+    <opcode> aso rexr rexx rexb ; 0f 92 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setnb">
+    <opcode> aso rexr rexx rexb ; 0f 93 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setz">
+    <opcode> aso rexr rexx rexb ; 0f 94 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setnz">
+    <opcode> aso rexr rexx rexb ; 0f 95 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setbe">
+    <opcode> aso rexr rexx rexb ; 0f 96 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="seta">
+    <opcode> aso rexr rexx rexb ; 0f 97 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="sets">
+    <opcode> aso rexr rexx rexb ; 0f 98 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setns">
+    <opcode> aso rexr rexx rexb ; 0f 99 ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setp">
+    <opcode> aso rexr rexx rexb ; 0f 9a ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setnp">
+    <opcode> aso rexr rexx rexb ; 0f 9b ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setl">
+    <opcode> aso rexr rexx rexb ; 0f 9c ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setge">
+    <opcode> aso rexr rexx rexb ; 0f 9d ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setle">
+    <opcode> aso rexr rexx rexb ; 0f 9e ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="setg">
+    <opcode> aso rexr rexx rexb ; 0f 9f ; Eb </opcode>
+  </instruction>
+
+  <instruction mnemonic="sfence">
+    <opcode> 0F AE /7 /mod=11 /rm=0 ; </opcode>
+    <opcode> 0F AE /7 /mod=11 /rm=1 ; </opcode>
+    <opcode> 0F AE /7 /mod=11 /rm=2 ; </opcode>
+    <opcode> 0F AE /7 /mod=11 /rm=3 ; </opcode>
+    <opcode> 0F AE /7 /mod=11 /rm=4 ; </opcode>
+    <opcode> 0F AE /7 /mod=11 /rm=5 ; </opcode>
+    <opcode> 0F AE /7 /mod=11 /rm=6 ; </opcode>
+    <opcode> 0F AE /7 /mod=11 /rm=7 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="sgdt">
+    <opcode> aso rexr rexx rexb ; 0F 01 /0 /mod=!11 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="shld">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f a4 ; Ev Gv Ib </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 0f a5 ; Ev Gv CL </opcode>
+  </instruction>
+
+  <instruction mnemonic="shrd">
+    <opcode> aso oso rexw rexr rexx rexb ; 0f ac ; Ev Gv Ib </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 0f ad ; Ev Gv CL </opcode>
+  </instruction>
+
+  <instruction mnemonic="shufpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f c6 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="shufps">
+    <opcode> aso rexr rexx rexb ; 0f c6 ; V W Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="sidt">
+    <opcode> aso rexr rexx rexb ; 0F 01 /1 /mod=!11 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="sldt">
+    <opcode> aso oso rexr rexx rexb ; 0F 00 /0 ; Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="smsw">
+    <opcode> aso rexr rexx rexb ; 0F 01 /4 /mod=!11 ; M </opcode>
+  </instruction>
+
+  <instruction mnemonic="sqrtps">
+    <opcode> aso rexr rexx rexb ; 0f 51 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="sqrtpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 51 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="sqrtsd">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 51 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="sqrtss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 51 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="stc">
+    <opcode> f9 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="std">
+    <opcode> fd ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="stgi">
+    <opcode> 0F 01 /3 /mod=11 /rm=4 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="sti">
+    <opcode> fb ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="skinit">
+    <opcode> 0F 01 /3 /mod=11 /rm=6 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="stmxcsr">
+    <opcode> aso rexw rexr rexx rexb ; 0F AE /3 ; Md </opcode>
+  </instruction>
+
+  <instruction mnemonic="stosb">
+    <opcode imp_addr="1"> ; aa ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="stosw">
+    <opcode imp_addr="1"> oso rexw ; ab /O16 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="stosd">
+    <opcode imp_addr="1"> oso rexw ; ab /O32 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="stosq">
+    <opcode imp_addr="1"> oso rexw ; ab /O64 ; </opcode> 
+  </instruction>
+
+  <instruction mnemonic="str">
+    <opcode> aso oso rexr rexx rexb ; 0F 00 /1 ; Ev </opcode>
+  </instruction>
+
+  <instruction mnemonic="sub">
+    <opcode> aso rexr rexx rexb ; 28 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 29 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 2a ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 2b ; Gv Ev </opcode>
+    <opcode> 2c ; AL Ib </opcode>
+    <opcode> oso rexw ; 2d ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 80 /5 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /5 ; Ev Iz </opcode>
+    <opcode mode="inv64" cast="1"> aso rexr rexx rexb ; 82 /5 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /5 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="subpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 5c ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="subps">
+    <opcode> aso rexr rexx rexb ; 0f 5c ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="subsd">
+    <opcode> aso rexr rexx rexb ; ssef2 0f 5c ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="subss">
+    <opcode> aso rexr rexx rexb ; ssef3 0f 5c ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="swapgs">
+    <opcode> 0F 01 /7 /mod=11 /rm=0 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="syscall">
+    <opcode> 0f 05 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="sysenter">
+    <opcode mode="inv64"> 0f 34 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="sysexit">
+    <opcode> 0f 35 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="sysret">
+    <opcode> 0f 07 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="test">
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /0 ; Eb Ib </opcode>
+    <opcode> aso rexr rexx rexb ; 84 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 85 ; Ev Gv </opcode>
+    <opcode> a8 ; AL Ib </opcode>
+    <opcode> oso rexw ; a9 ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexw rexr rexx rexb ; F6 /1 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /0 ; Ev Iz </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; F7 /1 ; Ev Iz </opcode>
+  </instruction>
+
+
+  <instruction mnemonic="ucomisd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 2e ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="ucomiss">
+    <opcode> aso rexr rexx rexb ; 0f 2e ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="ud2">
+    <opcode> 0f 0b ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="unpckhpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 15 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="unpckhps">
+    <opcode> aso rexr rexx rexb ; 0f 15 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="unpcklps">
+    <opcode> aso rexr rexx rexb ; 0f 14 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="unpcklpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 14 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="verr">
+    <opcode> aso rexr rexx rexb ; 0F 00 /4 ; Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="verw">
+    <opcode> aso rexr rexx rexb ; 0F 00 /5 ; Ew </opcode>
+  </instruction>
+
+  <instruction mnemonic="vmcall">
+    <opcode> 0F 01 /0 /mod=11 /rm=1 ; </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmclear">
+    <opcode> aso rexr rexx rexb ; sse66 0F C7 /6 ; Mq </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmxon">
+    <opcode> aso rexr rexx rexb ; ssef3 0F C7 /6 ; Mq </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmptrld">
+    <opcode> aso rexr rexx rexb ; 0F C7 /6 ; Mq </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmptrst">
+    <opcode> aso rexr rexx rexb ; 0F C7 /7 ; Mq </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmlaunch">
+    <opcode> 0F 01 /0 /mod=11 /rm=2 ; </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmresume">
+    <opcode> 0F 01 /0 /mod=11 /rm=3 ; </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmxoff">
+    <opcode> 0F 01 /0 /mod=11 /rm=4 ; </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmread">
+    <opcode mode="def64"> aso rexr rexx rexb ; 0F 78 /M16 ; Ed Gd </opcode>
+    <opcode mode="def64"> aso rexr rexx rexb ; 0F 78 /M32 ; Ed Gd </opcode>
+    <opcode mode="def64"> aso rexr rexx rexb ; 0F 78 /M64 ; Eq Gq </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmwrite">
+    <opcode mode="def64"> aso rexr rexx rexb ; 0F 79 /M16 ; Gd Ed </opcode>
+    <opcode mode="def64"> aso rexr rexx rexb ; 0F 79 /M32 ; Gd Ed </opcode>
+    <opcode mode="def64"> aso rexr rexx rexb ; 0F 79 /M64 ; Gq Eq </opcode>
+    <vendor> INTEL </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmrun">
+    <opcode> 0F 01 /3 /mod=11 /rm=0 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmmcall">
+    <opcode> 0F 01 /3 /mod=11 /rm=1 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmload">
+    <opcode> 0F 01 /3 /mod=11 /rm=2 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="vmsave">
+    <opcode> 0F 01 /3 /mod=11 /rm=3 ; </opcode>
+    <vendor> AMD </vendor>
+  </instruction>
+
+  <instruction mnemonic="wait">
+    <opcode> ; 9b ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="wbinvd">
+    <opcode> 0f 09 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="wrmsr">
+    <opcode> 0f 30 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xadd">
+    <opcode> aso oso rexr rexx rexb ; 0f c0 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; sse66 0f c1 ; Ev Gv </opcode>
+    <opcode> aso rexw rexr rexx rexb ; sse66 0f c0 ; Eb Gb </opcode>
+    <opcode> aso rexw rexr rexx rexb ; ssef2 0f c0 ; Eb Gb </opcode>
+    <opcode> aso oso rexr rexx rexb ; ssef2 0f c1 ; Ev Gv </opcode>
+    <opcode> aso rexw rexr rexx rexb ; ssef3 0f c0 ; Eb Gb </opcode>
+    <opcode> aso rexw rexr rexx rexb ; ssef3 0f c1 ; Ev Gv </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 0f c1 ; Ev Gv </opcode>
+  </instruction>
+
+  <instruction mnemonic="xchg">
+    <opcode> aso rexr rexx rexb ; 86 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 87 ; Ev Gv </opcode>
+    <opcode> oso rexw rexb ; 90 ; rAXr8 rAX </opcode>
+    <opcode> oso rexw rexb ; 91 ; rCXr9 rAX </opcode>
+    <opcode> oso rexw rexb ; 92 ; rDXr10 rAX </opcode>
+    <opcode> oso rexw rexb ; 93 ; rBXr11 rAX </opcode>
+    <opcode> oso rexw rexb ; 94 ; rSPr12 rAX </opcode>
+    <opcode> oso rexw rexb ; 95 ; rBPr13 rAX </opcode>
+    <opcode> oso rexw rexb ; 96 ; rSIr14 rAX </opcode>
+    <opcode> oso rexw rexb ; 97 ; rDIr15 rAX </opcode>
+  </instruction>
+
+  <instruction mnemonic="xlatb">
+    <opcode> rexw ; d7 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xor">
+    <opcode> aso rexr rexx rexb ; 30 ; Eb Gb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 31 ; Ev Gv </opcode>
+    <opcode> aso rexr rexx rexb ; 32 ; Gb Eb </opcode>
+    <opcode> aso oso rexw rexr rexx rexb ; 33 ; Gv Ev </opcode>
+    <opcode> ; 34 ; AL Ib </opcode>
+    <opcode> oso rexw ; 35 ; rAX Iz </opcode>
+    <opcode cast="1"> aso rexr rexx rexb ; 80 /6 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 81 /6 ; Ev Iz </opcode>
+    <opcode mode="inv64" cast="1"> aso rexr rexx rexb ; 82 /6 ; Eb Ib </opcode>
+    <opcode cast="1"> aso oso rexw rexr rexx rexb ; 83 /6 ; Ev Ib </opcode>
+  </instruction>
+
+  <instruction mnemonic="xorpd">
+    <opcode> aso rexr rexx rexb ; sse66 0f 57 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="xorps">
+    <opcode> aso rexr rexx rexb ; 0f 57 ; V W </opcode>
+  </instruction>
+
+  <instruction mnemonic="xcryptecb">
+    <opcode> ; 0f a7 /mod=11 /rm=0 /1 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xcryptcbc">
+    <opcode> ; 0f a7 /mod=11 /rm=0 /2 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xcryptctr">
+    <opcode> ; 0f a7 /mod=11 /rm=0 /3 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xcryptcfb">
+    <opcode> ; 0f a7 /mod=11 /rm=0 /4 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xcryptofb">
+    <opcode> ; 0f a7 /mod=11 /rm=0 /5 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xsha1">
+    <opcode> ; 0f a6 /mod=11 /rm=0 /1 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xsha256">
+    <opcode> ; 0f a6 /mod=11 /rm=0 /2 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="xstore">
+    <opcode> ; 0f a7 /mod=11 /rm=0 /0 ; </opcode>
+  </instruction>
+
+  <instruction mnemonic="db"></instruction>
+
+  <instruction mnemonic="invalid"></instruction>
+
+</x86optable>
diff --git a/docs/x86/optable.xsl b/docs/x86/optable.xsl
new file mode 100644 (file)
index 0000000..df1c0cf
--- /dev/null
@@ -0,0 +1,63 @@
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
+<xsl:template match="x86optable">
+<html>
+   <head>
+    <title>x86 opcode table</title>
+    <style>
+    .mnm {
+       border-bottom: 1px dotted #cdcdcd;
+       font-family: "lucida sans", georgia, helvetica, arial, verdana, georgia;
+       border-right: 1px solid #cdcdcd;
+       font-size: 1em;
+    }
+
+    .opc {
+       border-bottom: 1px dotted #cdcdcd;
+       border-right: 1px solid #cdcdcd;
+       font-family: monospace;
+       font-size: 1.1em;
+    }
+
+    .vdr {
+       border-bottom: 1px dotted #cdcdcd;
+       border-right: 1px solid #cdcdcd;
+       font-size: .9em;
+    }      
+    </style>
+   </head>
+   <body> 
+      <h1 style="text-align:left; padding-left:8px;">x86optable.xml</h1>
+       <p style="text-align:left; padding-left:8px">
+               <a style="text-decoration:none" href="http://udis86.sourceforge.net/">udis86.sourceforge.net</a></p>
+      <table cellpadding="4" cellspacing="6" width="800px"> 
+         <tr bgcolor='lightblue'>
+            <td align="center">Mnemonic</td>
+           <td align="center">Opcodes</td>
+           <td align="center">Vendor</td>
+         </tr>
+         <xsl:for-each select="instruction">
+            <tr>   
+               <td class="mnm" align="center" valign="middle"><xsl:value-of select="@mnemonic"/></td>
+               <td class="opc">
+               <xsl:for-each select="opcode">
+               <xsl:apply-templates/>  
+               <br/>
+               </xsl:for-each>
+               </td>
+               <td class="vdr" align="center" valign="top">
+               <xsl:for-each select="vendor">
+               <xsl:apply-templates/>  
+               <br/>
+               </xsl:for-each>
+               </td>
+            </tr>
+         </xsl:for-each>
+      </table>
+       <p style="text-align:left; padding-left:8px">
+               <small>Copyright (c) 2008, Vivek Thampi</small>
+       </p>
+
+   </body>
+</html>
+</xsl:template>
+</xsl:stylesheet>
This page took 0.197034 seconds and 5 git commands to generate.