Palacios Public Git Repository

To checkout Palacios execute

  git clone http://v3vee.org/palacios/palacios.web/palacios.git
This will give you the master branch. You probably want the devel branch or one of the release branches. To switch to the devel branch, simply execute
  cd palacios
  git checkout --track -b devel origin/devel
The other branches are similar.


Release 1.0
[palacios.git] / misc / decoder_test / XED2 / doc / html / group__SMALLEXAMPLES.html
diff --git a/misc/decoder_test/XED2/doc/html/group__SMALLEXAMPLES.html b/misc/decoder_test/XED2/doc/html/group__SMALLEXAMPLES.html
new file mode 100644 (file)
index 0000000..e19487c
--- /dev/null
@@ -0,0 +1,475 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>XED2: XED2 User Guide - Thu May 15 03:15:09 2008 </title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+<link href="tabs.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.4.6 -->
+<div class="tabs">
+  <ul>
+    <li><a href="main.html"><span>Main&nbsp;Page</span></a></li>
+    <li><a href="modules.html"><span>Modules</span></a></li>
+    <li><a href="classes.html"><span>Data&nbsp;Structures</span></a></li>
+    <li><a href="files.html"><span>Files</span></a></li>
+    <li>
+      <form action="search.php" method="get">
+        <table cellspacing="0" cellpadding="0" border="0">
+          <tr>
+            <td><label>&nbsp;<u>S</u>earch&nbsp;for&nbsp;</label></td>
+            <td><input type="text" name="query" value="" size="20" accesskey="s"/></td>
+          </tr>
+        </table>
+      </form>
+    </li>
+  </ul></div>
+<h1>Small Examples of using XED</h1>Here is a minimal example of using XED from the file examples/xed-min.cpp.<p>
+<div class="fragment"><pre class="fragment"><span class="comment">/*BEGIN_LEGAL </span>
+<span class="comment">Copyright (c) 2007, Intel Corp.</span>
+<span class="comment">All rights reserved.</span>
+<span class="comment"></span>
+<span class="comment">Redistribution and use in source and binary forms, with or without</span>
+<span class="comment">modification, are permitted provided that the following conditions are</span>
+<span class="comment">met:</span>
+<span class="comment"></span>
+<span class="comment">    * Redistributions of source code must retain the above copyright</span>
+<span class="comment">      notice, this list of conditions and the following disclaimer.</span>
+<span class="comment"></span>
+<span class="comment">    * Redistributions in binary form must reproduce the above</span>
+<span class="comment">      copyright notice, this list of conditions and the following</span>
+<span class="comment">      disclaimer in the documentation and/or other materials provided</span>
+<span class="comment">      with the distribution.</span>
+<span class="comment"></span>
+<span class="comment">    * Neither the name of Intel Corporation nor the names of its</span>
+<span class="comment">      contributors may be used to endorse or promote products derived</span>
+<span class="comment">      from this software without specific prior written permission.</span>
+<span class="comment"></span>
+<span class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span>
+<span class="comment">"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span>
+<span class="comment">LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span>
+<span class="comment">A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span>
+<span class="comment">OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
+<span class="comment">SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span>
+<span class="comment">LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span>
+<span class="comment">DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span>
+<span class="comment">THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span>
+<span class="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span>
+<span class="comment">OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
+<span class="comment">END_LEGAL */</span>
+
+<span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<span class="preprocessor">#include "<a class="code" href="xed-interface_8h.html">xed-interface.h</a>"</span>
+}
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+<span class="preprocessor">#include &lt;iomanip&gt;</span>
+<span class="keyword">using namespace </span>std;
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+    <span class="comment">// initialize the XED tables -- one time.</span>
+    <a class="code" href="group__INIT.html#g26aa0242b953b5fd0d14b1fa19442627">xed_tables_init</a>();
+
+    <span class="comment">// The state of the machine -- required for decoding</span>
+    <a class="code" href="group__INIT.html#g58af142456a133c3df29c763216a85cf">xed_state_t</a> dstate;
+    <a class="code" href="group__INIT.html#g8eea80ff7aa0fc77c3c3e90ce3e1fd64">xed_state_zero</a>(&amp;dstate);
+    <a class="code" href="group__INIT.html#g2363cf0a5b4628b09c0dfd1641119714">xed_state_init</a>(&amp;dstate,
+                   <a class="code" href="xed-machine-mode-enum_8h.html#754db9d73c5365644094cd161fe570a7a96a9d517621e28100e179eff7c92458">XED_MACHINE_MODE_LEGACY_32</a>, 
+                   <a class="code" href="xed-address-width-enum_8h.html#2fe76cf1d3e62a77190798dc87c0a8651d4c2a3aeffa1872b2f24730e4c83d02">XED_ADDRESS_WIDTH_32b</a>, 
+                   <a class="code" href="xed-address-width-enum_8h.html#2fe76cf1d3e62a77190798dc87c0a8651d4c2a3aeffa1872b2f24730e4c83d02">XED_ADDRESS_WIDTH_32b</a>);
+
+    <span class="comment">// create the decoded instruction, and fill in the machine mode (dstate)</span>
+    <a class="code" href="group__DEC.html#ga704925b5f80885a0ac56640a7c70937">xed_decoded_inst_t</a> xedd;
+    <a class="code" href="group__DEC.html#ge32686224b685dfc7be3f13504e0a0df">xed_decoded_inst_zero_set_mode</a>(&amp;xedd, &amp;dstate);
+        
+    <span class="comment">// make up a simple 2Byte instruction to decode</span>
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> bytes = 2;
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> itext[15] = { 0, 0};
+
+    <span class="comment">// call decode</span>
+    <a class="code" href="xed-error-enum_8h.html#2611877aa5e8b566c1c2be45aa89c792">xed_error_enum_t</a> xed_error = <a class="code" href="group__DEC.html#g9a27c2bb97caf98a6024567b261d0652">xed_decode</a>(&amp;xedd, 
+                                            <a class="code" href="xed-portability_8h.html#8f026df65b9734e9def65ff4059605c5">STATIC_CAST</a>(<span class="keyword">const</span> xed_uint8_t*,itext),
+                                            bytes);
+
+    <span class="comment">// check for errors</span>
+    <a class="code" href="xed-types_8h.html#d355c921b747945a82d62233a599c7b5">xed_bool_t</a> okay = (xed_error == <a class="code" href="xed-error-enum_8h.html#2611877aa5e8b566c1c2be45aa89c792d9f5736eacb4d9dedd9aadf1d75b9de6">XED_ERROR_NONE</a>);
+    <span class="keywordflow">if</span> (okay) {
+        cout &lt;&lt; <span class="stringliteral">"OK"</span> &lt;&lt; endl;
+        <span class="keywordflow">return</span> 0;
+    }
+    <span class="keywordflow">return</span> 1;
+    (void) argc; (void) argv; <span class="comment">//pacify compiler</span>
+}
+</pre></div><p>
+There is a makefile in the examples directory. Here's how to compile it from a kit: <div class="fragment"><pre class="fragment">% g++ -Ipath-to-xed2-kit/include -Ipath-to-xed2-kit/examples  -c path-to-xed2-kit/examples/xed-min.cpp
+% g++ -o xed-min xed-min.o path-to-xed2-kit/lib/libxed.a
+</pre></div> where path-to-xed2-kit is where you have your include, examples and lib directories from an installed XED2 kit.<p>
+Here is a more detailed example (examples/xed-ex1.cpp) that walks the operands much like the printing routines do for the <a class="el" href="group__DEC.html#ga704925b5f80885a0ac56640a7c70937">xed_decoded_inst_t</a> .<p>
+<div class="fragment"><pre class="fragment"><span class="comment">/*BEGIN_LEGAL </span>
+<span class="comment">Copyright (c) 2007, Intel Corp.</span>
+<span class="comment">All rights reserved.</span>
+<span class="comment"></span>
+<span class="comment">Redistribution and use in source and binary forms, with or without</span>
+<span class="comment">modification, are permitted provided that the following conditions are</span>
+<span class="comment">met:</span>
+<span class="comment"></span>
+<span class="comment">    * Redistributions of source code must retain the above copyright</span>
+<span class="comment">      notice, this list of conditions and the following disclaimer.</span>
+<span class="comment"></span>
+<span class="comment">    * Redistributions in binary form must reproduce the above</span>
+<span class="comment">      copyright notice, this list of conditions and the following</span>
+<span class="comment">      disclaimer in the documentation and/or other materials provided</span>
+<span class="comment">      with the distribution.</span>
+<span class="comment"></span>
+<span class="comment">    * Neither the name of Intel Corporation nor the names of its</span>
+<span class="comment">      contributors may be used to endorse or promote products derived</span>
+<span class="comment">      from this software without specific prior written permission.</span>
+<span class="comment"></span>
+<span class="comment">THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS</span>
+<span class="comment">"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT</span>
+<span class="comment">LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR</span>
+<span class="comment">A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT</span>
+<span class="comment">OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,</span>
+<span class="comment">SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT</span>
+<span class="comment">LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,</span>
+<span class="comment">DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY</span>
+<span class="comment">THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT</span>
+<span class="comment">(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE</span>
+<span class="comment">OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.</span>
+<span class="comment">END_LEGAL */</span>
+
+<span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
+<span class="preprocessor">#include "<a class="code" href="xed-interface_8h.html">xed-interface.h</a>"</span>
+}
+<span class="preprocessor">#include "xed-examples-ostreams.H"</span>
+<span class="preprocessor">#include &lt;iostream&gt;</span>
+<span class="preprocessor">#include &lt;iomanip&gt;</span>
+<span class="preprocessor">#include &lt;sstream&gt;</span>
+<span class="preprocessor">#include &lt;cassert&gt;</span>
+<span class="keyword">using namespace </span>std;
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv);
+
+<span class="keywordtype">void</span> print_attributes(<a class="code" href="group__DEC.html#ga704925b5f80885a0ac56640a7c70937">xed_decoded_inst_t</a>* xedd) {
+    <span class="keyword">const</span> <a class="code" href="group__DEC.html#g2b28c31e1e83e74ef5f613b38e0cc0ec">xed_inst_t</a>* xi = <a class="code" href="group__DEC.html#ge507752abfa509bd72ee0903e873fe9e">xed_decoded_inst_inst</a>(xedd);
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, nattributes  =  <a class="code" href="group__DEC.html#g1dee8af51e3d8ed5a6c5dac13780be9e">xed_attribute_max</a>();
+    xed_uint32_t all_attributes = <a class="code" href="group__DEC.html#gfa48c095dbf6e00636253f974b2093d1">xed_inst_get_attributes</a>(xi);
+    <span class="keywordflow">if</span> (all_attributes == 0)
+        <span class="keywordflow">return</span>;
+    cout &lt;&lt; <span class="stringliteral">"ATTRIBUTES: "</span>;
+    <span class="keywordflow">for</span>(i=0;i&lt;nattributes;i++) {
+        <a class="code" href="xed-attribute-enum_8h.html#848d4cf396be5a647413e94bc6f0a383">xed_attribute_enum_t</a> attr = <a class="code" href="group__DEC.html#g38f0b100d724d97d80a8291a494dde06">xed_attribute</a>(i);
+        <span class="keywordflow">if</span> (<a class="code" href="group__DEC.html#gdae8e18eaeb265c2aab6fc82a216e5de">xed_inst_get_attribute</a>(xi,attr))
+            cout &lt;&lt; <a class="code" href="xed-attribute-enum_8h.html#46e1e07daead7a33e8704bc684fe795c">xed_attribute_enum_t2str</a>(attr) &lt;&lt; <span class="stringliteral">" "</span>;
+    }
+    cout &lt;&lt; endl;
+}
+
+<span class="keywordtype">void</span> print_flags(<a class="code" href="group__DEC.html#ga704925b5f80885a0ac56640a7c70937">xed_decoded_inst_t</a>* xedd) {
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, nflags;
+    <span class="keywordflow">if</span> (<a class="code" href="group__DEC.html#g6922f0d03774f1d9ec1d402fb70e5c63">xed_decoded_inst_uses_rflags</a>(xedd)) {
+        cout &lt;&lt; <span class="stringliteral">"FLAGS:"</span> &lt;&lt; endl;
+        <span class="keyword">const</span> <a class="code" href="group__FLAGS.html#g7a0efe6ee18616a7d37af47d4e3cae10">xed_simple_flag_t</a>* rfi = <a class="code" href="group__DEC.html#g275353ead71e5915f810ef06c4149b68">xed_decoded_inst_get_rflags_info</a>(xedd);
+        <span class="keywordflow">if</span> (<a class="code" href="group__FLAGS.html#g9aca7e505fe7962aa715528f32b18784">xed_simple_flag_reads_flags</a>(rfi)) {
+            cout &lt;&lt;  <span class="stringliteral">"   reads-rflags "</span>;
+        }
+        <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="group__FLAGS.html#g6bf79b1d9e94986b06db3977172ceeff">xed_simple_flag_writes_flags</a>(rfi)) {
+            <span class="comment">//XED provides may-write and must-write information</span>
+            <span class="keywordflow">if</span> (<a class="code" href="group__FLAGS.html#g7ef6569c3ed439bc8987307492a59281">xed_simple_flag_get_may_write</a>(rfi)) {
+                cout &lt;&lt; <span class="stringliteral">"  may-write-rflags "</span>;
+            }
+            <span class="keywordflow">if</span> (<a class="code" href="group__FLAGS.html#gb8e5992bf7dc342a056c4f57c80c01ed">xed_simple_flag_get_must_write</a>(rfi)) {
+                cout &lt;&lt; <span class="stringliteral">"  must-write-rflags "</span>;
+            }
+        }
+        nflags = <a class="code" href="group__FLAGS.html#g786dd6f5adb1f8d6aa47f53c1531473c">xed_simple_flag_get_nflags</a>(rfi);
+        <span class="keywordflow">for</span>( i=0;i&lt;nflags ;i++) {
+            <span class="keyword">const</span> <a class="code" href="group__FLAGS.html#g9a54b90e10974a59ee94c57d364254d2">xed_flag_action_t</a>* fa = <a class="code" href="group__FLAGS.html#g1db7706b1121de4f70e82fc85e3988c1">xed_simple_flag_get_flag_action</a>(rfi,i);
+            <span class="keywordtype">char</span> buf[500];
+            <a class="code" href="group__FLAGS.html#gabc09792128a39245636f4b0aab77f42">xed_flag_action_print</a>(fa,buf,500);
+            cout  &lt;&lt;  buf &lt;&lt; <span class="stringliteral">" "</span>;
+        }
+        cout &lt;&lt; endl;
+        <span class="comment">// or as as bit-union</span>
+        <span class="keyword">const</span> <a class="code" href="unionxed__flag__set__s.html">xed_flag_set_t</a>* read_set    = <a class="code" href="group__FLAGS.html#g0ae38bd952ce6da5eac4dac97c943caa">xed_simple_flag_get_read_flag_set</a>(rfi);
+        <span class="keyword">const</span> <a class="code" href="unionxed__flag__set__s.html">xed_flag_set_t</a>* written_set = <a class="code" href="group__FLAGS.html#gfd8226ec18ea804e5abbe9e6fef0c526">xed_simple_flag_get_written_flag_set</a>(rfi);
+        <span class="keywordtype">char</span> buf[500];
+        <a class="code" href="group__FLAGS.html#g7f7a68d1f3d02a08b60205a96e025bb2">xed_flag_set_print</a>(read_set,buf,500);
+        cout &lt;&lt; <span class="stringliteral">"  read: "</span> &lt;&lt; buf &lt;&lt; endl;
+        <a class="code" href="group__FLAGS.html#g7f7a68d1f3d02a08b60205a96e025bb2">xed_flag_set_print</a>(written_set,buf,500);
+        cout &lt;&lt; <span class="stringliteral">"  written: "</span> &lt;&lt; buf &lt;&lt; endl;
+    }
+}
+
+<span class="keywordtype">void</span> print_memops(<a class="code" href="group__DEC.html#ga704925b5f80885a0ac56640a7c70937">xed_decoded_inst_t</a>* xedd) {
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, memops = <a class="code" href="group__DEC.html#gc093ecf9904ce025bafa8e7318ded0ec">xed_decoded_inst_number_of_memory_operands</a>(xedd);
+    cout &lt;&lt; <span class="stringliteral">"Memory Operands"</span> &lt;&lt; endl;
+    
+    <span class="keywordflow">for</span>( i=0;i&lt;memops ; i++)   {
+        <a class="code" href="xed-types_8h.html#d355c921b747945a82d62233a599c7b5">xed_bool_t</a> r_or_w = <span class="keyword">false</span>;
+        cout &lt;&lt; <span class="stringliteral">"  "</span> &lt;&lt; i &lt;&lt; <span class="stringliteral">" "</span>;
+        <span class="keywordflow">if</span> ( <a class="code" href="group__DEC.html#g1d1b81a6e49ae396bdad946439794b5f">xed_decoded_inst_mem_read</a>(xedd,i)) {
+            cout &lt;&lt; <span class="stringliteral">"read "</span>;
+            r_or_w = <span class="keyword">true</span>;
+        }
+        <span class="keywordflow">if</span> (<a class="code" href="group__DEC.html#geda7bba6faea14f777752fbab269d425">xed_decoded_inst_mem_written</a>(xedd,i)) {
+            cout &lt;&lt; <span class="stringliteral">"written "</span>;
+            r_or_w = <span class="keyword">true</span>;
+        }
+        <span class="keywordflow">if</span> (!r_or_w) {
+            cout &lt;&lt; <span class="stringliteral">"agen "</span>; <span class="comment">// LEA instructions</span>
+        }
+        <a class="code" href="xed-reg-enum_8h.html#f05c33c5a68e9304d1d8ac0408ae3f61">xed_reg_enum_t</a> seg = <a class="code" href="group__DEC.html#g1451e49df729a4fe1e650db6cb3343d2">xed_decoded_inst_get_seg_reg</a>(xedd,i);
+        <span class="keywordflow">if</span> (seg != <a class="code" href="xed-reg-enum_8h.html#f05c33c5a68e9304d1d8ac0408ae3f61fac474058f0819d415285511086bf219">XED_REG_INVALID</a>) {
+            cout &lt;&lt; <span class="stringliteral">"SEG= "</span> &lt;&lt; <a class="code" href="xed-reg-enum_8h.html#2219331ccd4d809d431e81fe5e857e95">xed_reg_enum_t2str</a>(seg) &lt;&lt; <span class="stringliteral">" "</span>;
+        }
+        <a class="code" href="xed-reg-enum_8h.html#f05c33c5a68e9304d1d8ac0408ae3f61">xed_reg_enum_t</a> base = <a class="code" href="group__DEC.html#gef27a2e2c7c6cb84d8e6ba239267172a">xed_decoded_inst_get_base_reg</a>(xedd,i);
+        <span class="keywordflow">if</span> (base != <a class="code" href="xed-reg-enum_8h.html#f05c33c5a68e9304d1d8ac0408ae3f61fac474058f0819d415285511086bf219">XED_REG_INVALID</a>) {
+            cout &lt;&lt; <span class="stringliteral">"BASE= "</span> &lt;&lt; <a class="code" href="xed-reg-enum_8h.html#2219331ccd4d809d431e81fe5e857e95">xed_reg_enum_t2str</a>(base) &lt;&lt; <span class="stringliteral">"/"</span>
+                 &lt;&lt;  <a class="code" href="xed-reg-class-enum_8h.html#316b262608066a946aaa86cde7b1debb">xed_reg_class_enum_t2str</a>(<a class="code" href="group__REGINTFC.html#g9003309edac48c9c1dfca2187497c613">xed_reg_class</a>(base)) &lt;&lt; <span class="stringliteral">" "</span>; 
+        }
+        <a class="code" href="xed-reg-enum_8h.html#f05c33c5a68e9304d1d8ac0408ae3f61">xed_reg_enum_t</a> indx = <a class="code" href="group__DEC.html#gd39ecfe4d1c3d95161f291e4d9a18280">xed_decoded_inst_get_index_reg</a>(xedd,i);
+        <span class="keywordflow">if</span> (i == 0 &amp;&amp; indx != <a class="code" href="xed-reg-enum_8h.html#f05c33c5a68e9304d1d8ac0408ae3f61fac474058f0819d415285511086bf219">XED_REG_INVALID</a>) {
+            cout &lt;&lt; <span class="stringliteral">"INDEX= "</span> &lt;&lt; <a class="code" href="xed-reg-enum_8h.html#2219331ccd4d809d431e81fe5e857e95">xed_reg_enum_t2str</a>(indx)
+                 &lt;&lt; <span class="stringliteral">"/"</span> &lt;&lt;  <a class="code" href="xed-reg-class-enum_8h.html#316b262608066a946aaa86cde7b1debb">xed_reg_class_enum_t2str</a>(<a class="code" href="group__REGINTFC.html#g9003309edac48c9c1dfca2187497c613">xed_reg_class</a>(indx)) &lt;&lt; <span class="stringliteral">" "</span>;
+            <span class="keywordflow">if</span> (<a class="code" href="group__DEC.html#g77a570e03d56cd31e50f4bc54104b0f9">xed_decoded_inst_get_scale</a>(xedd,i) != 0) {
+                <span class="comment">// only have a scale if the index exists.</span>
+                cout &lt;&lt; <span class="stringliteral">"SCALE= "</span> &lt;&lt;  <a class="code" href="group__DEC.html#g77a570e03d56cd31e50f4bc54104b0f9">xed_decoded_inst_get_scale</a>(xedd,i) &lt;&lt; <span class="stringliteral">" "</span>;
+            }
+        }
+        <a class="code" href="xed-types_8h.html#0c92e8263b7ca02d8e4826ae5b79bb30">xed_uint_t</a> disp_bits = <a class="code" href="group__DEC.html#g275efe423fe90a10a674da18f3265bd4">xed_decoded_inst_get_memory_displacement_width</a>(xedd,i);
+        <span class="keywordflow">if</span> (disp_bits) {
+            cout  &lt;&lt; <span class="stringliteral">"DISPLACEMENT_BYTES= "</span> &lt;&lt; disp_bits &lt;&lt; <span class="stringliteral">" "</span>;
+            xed_int64_t disp = <a class="code" href="group__DEC.html#ga8d22454961035b0fa6121c5f419817d">xed_decoded_inst_get_memory_displacement</a>(xedd,i);
+            cout &lt;&lt; hex &lt;&lt; setfill(<span class="charliteral">'0'</span>) &lt;&lt; setw(16) &lt;&lt; disp &lt;&lt; setfill(<span class="charliteral">' '</span>) &lt;&lt; dec;
+        }
+        cout &lt;&lt; endl;
+    }
+    cout &lt;&lt; <span class="stringliteral">"  MemopBytes = "</span> &lt;&lt; <a class="code" href="group__DEC.html#gecce1ea119eb21d3569ee0058d5ce084">xed_decoded_inst_get_memory_operand_length</a>(xedd,0) &lt;&lt; endl;
+}
+
+<span class="keywordtype">void</span> print_operands(<a class="code" href="group__DEC.html#ga704925b5f80885a0ac56640a7c70937">xed_decoded_inst_t</a>* xedd) {
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> i, noperands;
+    cout &lt;&lt; <span class="stringliteral">"Operands"</span> &lt;&lt; endl;
+    <span class="keyword">const</span> <a class="code" href="group__DEC.html#g2b28c31e1e83e74ef5f613b38e0cc0ec">xed_inst_t</a>* xi = <a class="code" href="group__DEC.html#ge507752abfa509bd72ee0903e873fe9e">xed_decoded_inst_inst</a>(xedd);
+    noperands = <a class="code" href="group__DEC.html#g5808f0c3992221777a51c9356bbfc1cf">xed_inst_noperands</a>(xi);
+    <span class="keywordflow">for</span>( i=0; i &lt; noperands ; i++) { 
+        <span class="keyword">const</span> <a class="code" href="group__DEC.html#g6e11e56c314f3035be79171df2f6938f">xed_operand_t</a>* op = <a class="code" href="group__DEC.html#g05c6c3704a2be54cdced61f99437c146">xed_inst_operand</a>(xi,i);
+        <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a">xed_operand_enum_t</a> op_name = <a class="code" href="group__DEC.html#g57209697b0dfb3e9ed4f694ca7cc16a4">xed_operand_name</a>(op);
+        cout &lt;&lt; i &lt;&lt; <span class="stringliteral">" "</span> &lt;&lt; <a class="code" href="xed-operand-enum_8h.html#2e1b95b3b4b059703a3be3780a990ade">xed_operand_enum_t2str</a>(op_name) &lt;&lt; <span class="stringliteral">" "</span>;
+        <span class="keywordflow">switch</span>(op_name) {
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a3ce839ecfbe4f991f6c46b7cb767a703">XED_OPERAND_AGEN</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a17757f8f75fb149d6a9ceff628403994">XED_OPERAND_MEM0</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011abe26987877ba7bfe6b67c7106fd77286">XED_OPERAND_MEM1</a>:
+            <span class="comment">// we print memops in a different function</span>
+            <span class="keywordflow">break</span>;
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011af84141b5908fd0d494f446a66f3eeef3">XED_OPERAND_PTR</a>:  <span class="comment">// pointer (always in conjunction with a IMM0)</span>
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a6f36302cd147e020b2662b75fa314c17">XED_OPERAND_RELBR</a>: { <span class="comment">// branch displacements</span>
+              <a class="code" href="xed-types_8h.html#0c92e8263b7ca02d8e4826ae5b79bb30">xed_uint_t</a> disp_bits = <a class="code" href="group__DEC.html#g6ce6a33dea91f1cb846c78cf2848be58">xed_decoded_inst_get_branch_displacement_width</a>(xedd);
+              <span class="keywordflow">if</span> (disp_bits) {
+                  cout  &lt;&lt; <span class="stringliteral">"BRANCH_DISPLACEMENT_BYTES= "</span> &lt;&lt; disp_bits &lt;&lt; <span class="stringliteral">" "</span>;
+                  xed_int32_t disp = <a class="code" href="group__DEC.html#gada9b13de03dfeefff70f2d219504aae">xed_decoded_inst_get_branch_displacement</a>(xedd);
+                  cout &lt;&lt; hex &lt;&lt; setfill(<span class="charliteral">'0'</span>) &lt;&lt; setw(8) &lt;&lt; disp &lt;&lt; setfill(<span class="charliteral">' '</span>) &lt;&lt; dec;
+              }
+            }
+            <span class="keywordflow">break</span>;
+
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a7cfee5454147cd3ea586172facd26f30">XED_OPERAND_IMM0</a>: { <span class="comment">// immediates</span>
+              <a class="code" href="xed-types_8h.html#0c92e8263b7ca02d8e4826ae5b79bb30">xed_uint_t</a> width = <a class="code" href="group__DEC.html#g91e972de2b4dfd4edac004d2cdf2768c">xed_decoded_inst_get_immediate_width</a>(xedd);
+              <span class="keywordflow">if</span> (<a class="code" href="group__DEC.html#g7c752cb527745114566367dfa0bb176c">xed_decoded_inst_get_immediate_is_signed</a>(xedd)) {
+                  xed_int32_t x =<a class="code" href="group__DEC.html#gbbc8dec2bddec619bfe8f9a39c7ffdf4">xed_decoded_inst_get_signed_immediate</a>(xedd);
+                  cout &lt;&lt; hex &lt;&lt; setfill(<span class="charliteral">'0'</span>) &lt;&lt; setw(8) &lt;&lt; x &lt;&lt; setfill(<span class="charliteral">' '</span>) &lt;&lt; dec 
+                       &lt;&lt; <span class="charliteral">'('</span> &lt;&lt; width &lt;&lt; <span class="charliteral">')'</span>;
+              }
+              <span class="keywordflow">else</span> {
+                  xed_uint64_t x = <a class="code" href="group__DEC.html#g79461981ed1722ab09a094915fb72428">xed_decoded_inst_get_unsigned_immediate</a>(xedd); 
+                  cout &lt;&lt; hex &lt;&lt; setfill(<span class="charliteral">'0'</span>) &lt;&lt; setw(16) &lt;&lt; x &lt;&lt; setfill(<span class="charliteral">' '</span>) &lt;&lt; dec 
+                       &lt;&lt; <span class="charliteral">'('</span> &lt;&lt; width &lt;&lt; <span class="charliteral">')'</span>;
+              }
+              <span class="keywordflow">break</span>;
+          }
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011aecf4b40f8ec183182501a80b93b5b4dc">XED_OPERAND_IMM1</a>: { <span class="comment">// immediates</span>
+              xed_uint8_t x = <a class="code" href="group__DEC.html#gd1d32b618885f9d22aa75101664497e4">xed_decoded_inst_get_second_immediate</a>(xedd);
+              cout &lt;&lt; hex &lt;&lt; setfill(<span class="charliteral">'0'</span>) &lt;&lt; setw(2) &lt;&lt; (int)x &lt;&lt; setfill(<span class="charliteral">' '</span>) &lt;&lt; dec;
+              <span class="keywordflow">break</span>;
+          }
+
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a4a8a5c45ea6041f25d7b98e3892bb389">XED_OPERAND_REG0</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011af28c17e44b1cec75cbc35eaf230002cb">XED_OPERAND_REG1</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011abbe83849a642b40143efdeea44fa0497">XED_OPERAND_REG2</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011ad0c2b5884293abd53b930c1793382db1">XED_OPERAND_REG3</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a41eccb1a0eed942d3c1ce94d4932e6a7">XED_OPERAND_REG4</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a7deb7d4548980dee2208d9d5fde56fb6">XED_OPERAND_REG5</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011aacd4abc0766200998483d7d87ff12928">XED_OPERAND_REG6</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011abeb51b32bc8f34c0656208db36b05396">XED_OPERAND_REG7</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011abff9f6414b9de3a43c845721de9f97f4">XED_OPERAND_REG8</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011acd2ee03d98deab4a0fdf2a908a7f5114">XED_OPERAND_REG9</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a0f17743f40d66545cd14bdb17bb74497">XED_OPERAND_REG10</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011abcbb7154d3db34753a5e3de4b383d390">XED_OPERAND_REG11</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a34fec04200b37f89b8fcd0c45f67019c">XED_OPERAND_REG12</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011a897fd5ea6caef885e2691ade6686bf63">XED_OPERAND_REG13</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011abe80e57c468c838db74b56af55cbd8a6">XED_OPERAND_REG14</a>:
+          <span class="keywordflow">case</span> <a class="code" href="xed-operand-enum_8h.html#09c2a35d8bb7bfe68bb3d34b0a5e011af123139f3655bdbec0d3898aec5acc0f">XED_OPERAND_REG15</a>: {
+              <a class="code" href="xed-reg-enum_8h.html#f05c33c5a68e9304d1d8ac0408ae3f61">xed_reg_enum_t</a> r = <a class="code" href="group__DEC.html#g5635f3a3d121bbcbb64d548dbb32e4c5">xed_decoded_inst_get_reg</a>(xedd, op_name);
+              cout &lt;&lt; <a class="code" href="xed-operand-enum_8h.html#2e1b95b3b4b059703a3be3780a990ade">xed_operand_enum_t2str</a>(op_name) &lt;&lt; <span class="stringliteral">"="</span> &lt;&lt; <a class="code" href="xed-reg-enum_8h.html#2219331ccd4d809d431e81fe5e857e95">xed_reg_enum_t2str</a>(r);
+              <span class="keywordflow">break</span>;
+          }
+          <span class="keywordflow">default</span>:
+            cout &lt;&lt; <span class="stringliteral">"[Not currently printing value of field "</span> &lt;&lt; <a class="code" href="xed-operand-enum_8h.html#2e1b95b3b4b059703a3be3780a990ade">xed_operand_enum_t2str</a>(op_name) &lt;&lt; <span class="charliteral">']'</span>;
+            <span class="keywordflow">break</span>;
+
+        }
+        cout &lt;&lt; <span class="stringliteral">" "</span> &lt;&lt; <a class="code" href="xed-operand-visibility-enum_8h.html#1599399c8155e07c2eb230bb6875aa8a">xed_operand_visibility_enum_t2str</a>(<a class="code" href="group__DEC.html#g2e8b5df9fc68c6aa7fbeb98735e1d4a9">xed_operand_operand_visibility</a>(op))
+             &lt;&lt; <span class="stringliteral">" / "</span> &lt;&lt; <a class="code" href="xed-operand-action-enum_8h.html#c4a01bed223e067779f08893924836dc">xed_operand_action_enum_t2str</a>(<a class="code" href="group__DEC.html#ge5299214951891952401b5061e48a6ca">xed_operand_rw</a>(op))
+             &lt;&lt; <span class="stringliteral">" / "</span> &lt;&lt; <a class="code" href="xed-operand-width-enum_8h.html#0b6efac075c3dda631990ba013a5bbfb">xed_operand_width_enum_t2str</a>(<a class="code" href="group__DEC.html#g1159569c734bf712a40a2a88542d549d">xed_operand_width</a>(op));
+        cout &lt;&lt; <span class="stringliteral">" bytes="</span> &lt;&lt; <a class="code" href="group__DEC.html#ga030199ba499d2bcb67cbf7740d8d4c6">xed_decoded_inst_operand_length</a>(xedd,i);
+        cout &lt;&lt; endl;
+    }
+}
+
+<span class="keywordtype">int</span> main(<span class="keywordtype">int</span> argc, <span class="keywordtype">char</span>** argv) {
+    <a class="code" href="group__INIT.html#g58af142456a133c3df29c763216a85cf">xed_state_t</a> dstate;
+    <a class="code" href="group__DEC.html#ga704925b5f80885a0ac56640a7c70937">xed_decoded_inst_t</a> xedd;
+    <span class="keywordtype">int</span> i, bytes = 0;
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> itext[<a class="code" href="xed-common-defs_8h.html#214b18e98040dbace0d9e0a0a7937484">XED_MAX_INSTRUCTION_BYTES</a>];
+    <a class="code" href="xed-types_8h.html#d355c921b747945a82d62233a599c7b5">xed_bool_t</a> long_mode = <span class="keyword">false</span>;
+    <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> first_argv;
+
+    <a class="code" href="group__INIT.html#g26aa0242b953b5fd0d14b1fa19442627">xed_tables_init</a>();
+    <a class="code" href="group__INIT.html#g8eea80ff7aa0fc77c3c3e90ce3e1fd64">xed_state_zero</a>(&amp;dstate);
+    <span class="keywordflow">if</span> (argc &gt; 2 &amp;&amp; strcmp(argv[1], <span class="stringliteral">"-64"</span>) == 0) 
+        long_mode = <span class="keyword">true</span>;
+
+    <span class="keywordflow">if</span> (long_mode)  {
+        first_argv = 2;
+        dstate.mmode=<a class="code" href="xed-machine-mode-enum_8h.html#754db9d73c5365644094cd161fe570a7708dc25876ca1910c387c0a4f2f066cb">XED_MACHINE_MODE_LONG_64</a>;
+    }
+    <span class="keywordflow">else</span> {
+        first_argv=1;
+        <a class="code" href="group__INIT.html#g2363cf0a5b4628b09c0dfd1641119714">xed_state_init</a>(&amp;dstate,
+                       <a class="code" href="xed-machine-mode-enum_8h.html#754db9d73c5365644094cd161fe570a7a96a9d517621e28100e179eff7c92458">XED_MACHINE_MODE_LEGACY_32</a>, 
+                       <a class="code" href="xed-address-width-enum_8h.html#2fe76cf1d3e62a77190798dc87c0a8651d4c2a3aeffa1872b2f24730e4c83d02">XED_ADDRESS_WIDTH_32b</a>, 
+                       <a class="code" href="xed-address-width-enum_8h.html#2fe76cf1d3e62a77190798dc87c0a8651d4c2a3aeffa1872b2f24730e4c83d02">XED_ADDRESS_WIDTH_32b</a>);
+    }
+
+    <a class="code" href="group__DEC.html#ge32686224b685dfc7be3f13504e0a0df">xed_decoded_inst_zero_set_mode</a>(&amp;xedd, &amp;dstate);
+
+    <span class="keywordflow">for</span>(  i=first_argv ;i &lt; argc; i++) {
+        <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> x;
+        <span class="comment">// sscanf is deprecated for MSVS8, so I'm using istringstreams</span>
+        <span class="comment">//sscanf(argv[i],"%x", &amp;x);</span>
+        istringstream s(argv[i]);
+        s &gt;&gt; hex &gt;&gt; x;
+        assert(bytes &lt; <a class="code" href="xed-common-defs_8h.html#214b18e98040dbace0d9e0a0a7937484">XED_MAX_INSTRUCTION_BYTES</a>);
+        itext[bytes++] = <a class="code" href="xed-portability_8h.html#8f026df65b9734e9def65ff4059605c5">STATIC_CAST</a>(xed_uint8_t,x);
+    }
+    <span class="keywordflow">if</span> (bytes == 0) {
+        cout &lt;&lt; <span class="stringliteral">"Must supply some hex bytes"</span> &lt;&lt; endl;
+        exit(1);
+    }
+
+    cout &lt;&lt; <span class="stringliteral">"Attempting to decode: "</span> &lt;&lt; hex &lt;&lt; setfill(<span class="charliteral">'0'</span>) ;
+    <span class="keywordflow">for</span>(i=0;i&lt;bytes;i++)
+        cout &lt;&lt;  setw(2) &lt;&lt; static_cast&lt;xed_uint_t&gt;(itext[i]) &lt;&lt; <span class="stringliteral">" "</span>;
+    cout &lt;&lt; endl &lt;&lt; setfill(<span class="charliteral">' '</span>) &lt;&lt; dec;
+
+    <a class="code" href="xed-error-enum_8h.html#2611877aa5e8b566c1c2be45aa89c792">xed_error_enum_t</a> xed_error = <a class="code" href="group__DEC.html#g9a27c2bb97caf98a6024567b261d0652">xed_decode</a>(&amp;xedd, 
+                                            <a class="code" href="xed-portability_8h.html#52e37c5ddf0c67630b91bcd101521585">REINTERPRET_CAST</a>(<span class="keyword">const</span> xed_uint8_t*,itext), 
+                                            bytes);
+    <span class="keywordflow">switch</span>(xed_error)    {
+      <span class="keywordflow">case</span> <a class="code" href="xed-error-enum_8h.html#2611877aa5e8b566c1c2be45aa89c792d9f5736eacb4d9dedd9aadf1d75b9de6">XED_ERROR_NONE</a>:
+        <span class="keywordflow">break</span>;
+      <span class="keywordflow">case</span> <a class="code" href="xed-error-enum_8h.html#2611877aa5e8b566c1c2be45aa89c7924e1f9ac48c70bc8ff830829266e6d10a">XED_ERROR_BUFFER_TOO_SHORT</a>:
+        cout &lt;&lt; <span class="stringliteral">"Not enough bytes provided"</span> &lt;&lt; endl;
+        exit(1);
+      <span class="keywordflow">case</span> <a class="code" href="xed-error-enum_8h.html#2611877aa5e8b566c1c2be45aa89c7922ade7c52f8c2eb9b6ae4c6e4cb4bd0d5">XED_ERROR_GENERAL_ERROR</a>:
+        cout &lt;&lt; <span class="stringliteral">"Could not decode given input."</span> &lt;&lt; endl;
+        exit(1);
+      <span class="keywordflow">default</span>:
+        cout &lt;&lt; <span class="stringliteral">"Unhandled error code "</span> &lt;&lt; <a class="code" href="xed-error-enum_8h.html#3a44865dce1b468619bc95ad8593b0bf">xed_error_enum_t2str</a>(xed_error) &lt;&lt; endl;
+        exit(1);
+    }
+        
+
+    cout &lt;&lt; <span class="stringliteral">"iclass "</span> 
+         &lt;&lt; <a class="code" href="xed-iclass-enum_8h.html#97f9a6174db43637bf0af371441fde97">xed_iclass_enum_t2str</a>(<a class="code" href="group__DEC.html#g2bc965a8dc2a1fee79b80b2c45d4329c">xed_decoded_inst_get_iclass</a>(&amp;xedd))  &lt;&lt; <span class="stringliteral">"\t"</span>;
+    cout &lt;&lt; <span class="stringliteral">"category "</span> 
+         &lt;&lt; <a class="code" href="xed-category-enum_8h.html#14cc11e45d2f7ef8af382c8304682216">xed_category_enum_t2str</a>(<a class="code" href="group__DEC.html#gdb8cfb26a825d8a8d8dcbf49857eab63">xed_decoded_inst_get_category</a>(&amp;xedd))  &lt;&lt; <span class="stringliteral">"\t"</span>;
+    cout &lt;&lt; <span class="stringliteral">"ISA-extension "</span> 
+         &lt;&lt; <a class="code" href="xed-extension-enum_8h.html#abb91fa22dcd7e51662b50b7c7488ee7">xed_extension_enum_t2str</a>(<a class="code" href="group__DEC.html#g2ad01ffd078ac7166c8a2bc1be1b6d4d">xed_decoded_inst_get_extension</a>(&amp;xedd))  &lt;&lt; endl;
+    cout &lt;&lt; <span class="stringliteral">"instruction-length "</span> 
+         &lt;&lt; <a class="code" href="group__DEC.html#gd1051f7b86c94d5670f684a6ea79fcdf">xed_decoded_inst_get_length</a>(&amp;xedd) &lt;&lt; endl;
+    cout &lt;&lt; <span class="stringliteral">"effective-operand-width "</span> 
+         &lt;&lt; <a class="code" href="group__OPERANDS.html#gd3d1c499fb13d8906bea608f9be2375b">xed_operand_values_get_effective_operand_width</a>(<a class="code" href="group__DEC.html#g38e372d3227817713159035cb47ad1fd">xed_decoded_inst_operands_const</a>(&amp;xedd))  &lt;&lt; endl;   
+    cout &lt;&lt; <span class="stringliteral">"effective-address-width "</span>
+         &lt;&lt; <a class="code" href="group__OPERANDS.html#g179da221c07e9bc7d86b6a23f668677c">xed_operand_values_get_effective_address_width</a>(<a class="code" href="group__DEC.html#g38e372d3227817713159035cb47ad1fd">xed_decoded_inst_operands_const</a>(&amp;xedd))  &lt;&lt; endl; 
+    cout &lt;&lt; <span class="stringliteral">"iform-enum-name "</span> 
+         &lt;&lt; <a class="code" href="xed-iform-enum_8h.html#a5982ee859cf508d10f1fe5c7e0d2f61">xed_iform_enum_t2str</a>(<a class="code" href="group__DEC.html#gf51f3a8153bdedec0d8864cc0e89b5c7">xed_decoded_inst_get_iform_enum</a>(&amp;xedd)) &lt;&lt; endl;
+    cout &lt;&lt; <span class="stringliteral">"iform-enum-name-dispatch (zero based) "</span> 
+         &lt;&lt; <a class="code" href="group__DEC.html#g8c85bf31ee09bde1bb5b957699a38f71">xed_decoded_inst_get_iform_enum_dispatch</a>(&amp;xedd) &lt;&lt; endl;
+    cout &lt;&lt; <span class="stringliteral">"iclass-max-iform-dispatch "</span>
+         &lt;&lt; <a class="code" href="group__DEC.html#g7b2e9c4095bddf90c3679c9fdd54b20c">xed_iform_max_per_iclass</a>(<a class="code" href="group__DEC.html#g2bc965a8dc2a1fee79b80b2c45d4329c">xed_decoded_inst_get_iclass</a>(&amp;xedd))  &lt;&lt; endl;
+
+    <span class="comment">// operands</span>
+    print_operands(&amp;xedd);
+    
+    <span class="comment">// memops</span>
+    print_memops(&amp;xedd);
+    
+    <span class="comment">// flags</span>
+    print_flags(&amp;xedd);
+
+    <span class="comment">// attributes</span>
+    print_attributes(&amp;xedd);
+    <span class="keywordflow">return</span> 0;
+}
+</pre></div><p>
+Here are a few examples of running the program:<p>
+<div class="fragment"><pre class="fragment">% ./xed-ex1 0 0
+iclass ADD      category INT_ALU        ISA-extension BASE
+instruction-length 2
+effective-operand-width 8b
+effective-address-width 32b
+Operands
+  0 MEM0  EXPLICIT / RW
+  1 REG AL EXPLICIT / R
+  2 REG EFLAGS SUPPRESSED / W
+Memory Operands
+  0 read SEG= DS BASE= EAX/REG32 
+  MemopLength = 1
+FLAGS:
+  must-write-rflags of-mod sf-mod zf-mod af-mod pf-mod cf-mod 
+  read: 
+  written: of sf zf af pf cf 
+===============================================================================
+
+% ./xed-ex1 f2 0f 58 9c 24 e0 00 00 00
+iclass ADDSD    category SSE    ISA-extension SSE2
+instruction-length 9
+effective-operand-width 32b
+effective-address-width 32b
+Operands
+  0 REG XMM3 EXPLICIT / RW
+  1 MEM0  EXPLICIT / R
+Memory Operands
+  0 read SEG= SS BASE= ESP/REG32 DISPLACEMENT= DISP32 0x000000e0
+  MemopLength = 8
+===============================================================================
+./xed-ex1 f3 90
+iclass PAUSE    category INT_ALU        ISA-extension BASE
+instruction-length 2
+effective-operand-width 32b
+effective-address-width 32b
+Operands
+Memory Operands
+  MemopLength = 0
+===============================================================================
+</pre></div> 
+<p>
+<table border="0" cellpadding="0" cellspacing="0">
+<tr><td></td></tr>
+</table>
+<hr size="1"><address style="align: right;"><small>Generated on Thu May 15 03:15:09 2008 for XED2 by&nbsp;
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.6 </small></address>
+</body>
+</html>