X-Git-Url: http://v3vee.org/palacios/gitweb/gitweb.cgi?p=palacios.git;a=blobdiff_plain;f=misc%2Fdecoder_test%2FXED2%2Fexamples%2Fxed-ex3.cpp;fp=misc%2Fdecoder_test%2FXED2%2Fexamples%2Fxed-ex3.cpp;h=d2ed1c9c98615a507e0264e70051f5029c2133c9;hp=0000000000000000000000000000000000000000;hb=ddc16b0737cf58f7aa90a69c6652cdf4090aec51;hpb=626595465a2c6987606a6bc697df65130ad8c2d3 diff --git a/misc/decoder_test/XED2/examples/xed-ex3.cpp b/misc/decoder_test/XED2/examples/xed-ex3.cpp new file mode 100644 index 0000000..d2ed1c9 --- /dev/null +++ b/misc/decoder_test/XED2/examples/xed-ex3.cpp @@ -0,0 +1,156 @@ +/*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-ex3.cpp +/// @author Mark Charney + +/// Encoder example + + +extern "C" { +#include "xed-interface.h" +#include "xed-examples-util.h" +} +#include "xed-enc-lang.H" +#include +#include +#include +#include +using namespace std; + +int main(int argc, char** argv); + + +void +usage(char* progname) +{ + cerr << "Usage: " << progname << " [-16|-32|-64] [-a16|-a32] [-s16|-s32] encode-string" << endl; + exit(1); +} + +ascii_encode_request_t +parse_args(unsigned int argc, char** argv) +{ + if (argc == 1) + usage(argv[0]); + + ascii_encode_request_t r; + r.dstate.mmode = XED_MACHINE_MODE_LEGACY_32; + r.dstate.addr_width = XED_ADDRESS_WIDTH_32b; + r.dstate.stack_addr_width = XED_ADDRESS_WIDTH_32b; + string c = ""; + unsigned int i = 1; + + for( ; i< argc; i++) + if (strcmp(argv[i],"-16")==0) + r.dstate.mmode = XED_MACHINE_MODE_LEGACY_16; + else if (strcmp(argv[i],"-32")==0) + r.dstate.mmode = XED_MACHINE_MODE_LEGACY_32; + else if (strcmp("-64", argv[i]) == 0) { + r.dstate.mmode = XED_MACHINE_MODE_LONG_64; + r.dstate.addr_width = XED_ADDRESS_WIDTH_64b; + } + else if (strcmp("-32", argv[i]) == 0) + r.dstate.mmode = XED_MACHINE_MODE_LEGACY_32; + else if (strcmp("-16", argv[i]) == 0) + r.dstate.mmode = XED_MACHINE_MODE_LEGACY_16; + else if (strcmp(argv[i],"-a32")==0) + r.dstate.addr_width = XED_ADDRESS_WIDTH_32b; + else if (strcmp(argv[i],"-a16")==0) + r.dstate.addr_width = XED_ADDRESS_WIDTH_16b; + else if (strcmp(argv[i],"-s32")==0) + r.dstate.stack_addr_width = XED_ADDRESS_WIDTH_32b; + else if (strcmp(argv[i],"-s16")==0) + r.dstate.stack_addr_width = XED_ADDRESS_WIDTH_16b; + else + break; + + if (i == argc) + usage(argv[0]); + + for( ;i