X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=misc%2Fdecoder_test%2FXED2%2Fexamples%2Fxed-ex1.cpp;fp=misc%2Fdecoder_test%2FXED2%2Fexamples%2Fxed-ex1.cpp;h=0000000000000000000000000000000000000000;hp=b9e22f1375575e5a56fe5a4773df433077e7452e;hb=7a6cd49101201e207daf7113a9048193835cebaf;hpb=320320a1c8681f2d8258a03dd087b3aed18b48a1 diff --git a/misc/decoder_test/XED2/examples/xed-ex1.cpp b/misc/decoder_test/XED2/examples/xed-ex1.cpp deleted file mode 100644 index b9e22f1..0000000 --- a/misc/decoder_test/XED2/examples/xed-ex1.cpp +++ /dev/null @@ -1,318 +0,0 @@ -/*BEGIN_LEGAL -Intel Open Source License - -Copyright (c) 2002-2007 Intel Corporation -All rights reserved. -Redistribution and use in source and binary forms, with or without -modification, are permitted provided that the following conditions are -met: - -Redistributions of source code must retain the above copyright notice, -this list of conditions and the following disclaimer. Redistributions -in binary form must reproduce the above copyright notice, this list of -conditions and the following disclaimer in the documentation and/or -other materials provided with the distribution. Neither the name of -the Intel Corporation nor the names of its contributors may be used to -endorse or promote products derived from this software without -specific prior written permission. - -THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE INTEL OR -ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -END_LEGAL */ -/// @file xed-ex1.cpp -/// @author Mark Charney - -extern "C" { -#include "xed-interface.h" -} -#include "xed-examples-ostreams.H" -#include -#include -#include -#include -using namespace std; - -int main(int argc, char** argv); - -void print_attributes(xed_decoded_inst_t* xedd) { - const xed_inst_t* xi = xed_decoded_inst_inst(xedd); - unsigned int i, nattributes = xed_attribute_max(); - xed_uint32_t all_attributes = xed_inst_get_attributes(xi); - if (all_attributes == 0) - return; - cout << "ATTRIBUTES: "; - for(i=0;i> hex >> x; - assert(bytes < XED_MAX_INSTRUCTION_BYTES); - itext[bytes++] = STATIC_CAST(xed_uint8_t,x); - } - if (bytes == 0) { - cout << "Must supply some hex bytes" << endl; - exit(1); - } - - cout << "Attempting to decode: " << hex << setfill('0') ; - for(i=0;i(itext[i]) << " "; - cout << endl << setfill(' ') << dec; - - xed_error_enum_t xed_error = xed_decode(&xedd, - REINTERPRET_CAST(const xed_uint8_t*,itext), - bytes); - switch(xed_error) { - case XED_ERROR_NONE: - break; - case XED_ERROR_BUFFER_TOO_SHORT: - cout << "Not enough bytes provided" << endl; - exit(1); - case XED_ERROR_GENERAL_ERROR: - cout << "Could not decode given input." << endl; - exit(1); - default: - cout << "Unhandled error code " << xed_error_enum_t2str(xed_error) << endl; - exit(1); - } - - - cout << "iclass " - << xed_iclass_enum_t2str(xed_decoded_inst_get_iclass(&xedd)) << "\t"; - cout << "category " - << xed_category_enum_t2str(xed_decoded_inst_get_category(&xedd)) << "\t"; - cout << "ISA-extension " - << xed_extension_enum_t2str(xed_decoded_inst_get_extension(&xedd)) << endl; - cout << "instruction-length " - << xed_decoded_inst_get_length(&xedd) << endl; - cout << "effective-operand-width " - << xed_operand_values_get_effective_operand_width(xed_decoded_inst_operands_const(&xedd)) << endl; - cout << "effective-address-width " - << xed_operand_values_get_effective_address_width(xed_decoded_inst_operands_const(&xedd)) << endl; - cout << "iform-enum-name " - << xed_iform_enum_t2str(xed_decoded_inst_get_iform_enum(&xedd)) << endl; - cout << "iform-enum-name-dispatch (zero based) " - << xed_decoded_inst_get_iform_enum_dispatch(&xedd) << endl; - cout << "iclass-max-iform-dispatch " - << xed_iform_max_per_iclass(xed_decoded_inst_get_iclass(&xedd)) << endl; - - // operands - print_operands(&xedd); - - // memops - print_memops(&xedd); - - // flags - print_flags(&xedd); - - // attributes - print_attributes(&xedd); - return 0; -}