ia32_locations.h

Go to the documentation of this file.
00001 /*
00002  * See the dyninst/COPYRIGHT file for copyright information.
00003  * 
00004  * We provide the Paradyn Tools (below described as "Paradyn")
00005  * on an AS IS basis, and do not warrant its validity or performance.
00006  * We reserve the right to update, modify, or discontinue this
00007  * software at any time.  We shall have no obligation to supply such
00008  * updates or modifications or any other form of support to you.
00009  * 
00010  * By your use of Paradyn, you understand and agree that we (or any
00011  * other person or entity with proprietary rights in Paradyn) are
00012  * under no obligation to provide either maintenance services,
00013  * update services, notices of latent defects, or correction of
00014  * defects for Paradyn.
00015  * 
00016  * This library is free software; you can redistribute it and/or
00017  * modify it under the terms of the GNU Lesser General Public
00018  * License as published by the Free Software Foundation; either
00019  * version 2.1 of the License, or (at your option) any later version.
00020  * 
00021  * This library is distributed in the hope that it will be useful,
00022  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00023  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00024  * Lesser General Public License for more details.
00025  * 
00026  * You should have received a copy of the GNU Lesser General Public
00027  * License along with this library; if not, write to the Free Software
00028  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
00029  */
00030 
00031 
00032 #if !defined(IA32_LOCS_H)
00033 #define IA32_LOCS_H
00034 
00035 class ia32_locations {
00036     public:
00037    ia32_locations() : num_prefixes(0), opcode_size(0), opcode_position(-1),
00038    disp_size(0), disp_position(-1), imm_cnt(0),
00039    modrm_position(-1), modrm_operand(-1), modrm_byte(0), modrm_mod(0),
00040    modrm_rm(0), modrm_reg(0), sib_byte(0), sib_position(-1),
00041    rex_position(-1), rex_byte(0), rex_w(0), rex_r(0), rex_x(0), rex_b(0),
00042    address_size(0) {
00043        imm_position[0] = -1;
00044        imm_size[0] = 0;
00045        imm_position[1] = -1;
00046        imm_size[1] = 0;
00047    }
00048    void reinit() {
00049        num_prefixes = 0;
00050        opcode_size = 0;
00051        opcode_position = -1;
00052        disp_size = 0;
00053        disp_position = -1;
00054        imm_cnt = 0;
00055        imm_position[0] = -1;
00056        imm_size[0] = -1;
00057        imm_position[1] = -1;
00058        imm_size[1] = -1;
00059        modrm_position = -1;
00060        modrm_operand = -1;
00061        modrm_byte = 0;
00062        modrm_mod = 0;
00063        modrm_rm = 0;
00064        modrm_reg = 0;
00065        sib_byte = 0;
00066        sib_position = -1;
00067        rex_position = -1;
00068        rex_byte = 0;
00069        rex_w = 0;
00070        rex_r = 0;
00071        rex_x = 0;
00072        rex_b = 0;
00073        address_size = 0;
00074    }
00075    int num_prefixes;
00076    unsigned int opcode_size;
00077    int opcode_position;
00078    
00079    unsigned disp_size;
00080    int disp_position;
00081 
00082    int imm_cnt;
00083    
00084    int modrm_position;
00085    int modrm_operand;
00086    unsigned char modrm_byte;
00087    unsigned char modrm_mod;
00088    unsigned char modrm_rm;
00089    unsigned char modrm_reg;
00090 
00091    unsigned char sib_byte;
00092    int sib_position;
00093    
00094    int rex_position;
00095    unsigned char rex_byte;
00096    unsigned char rex_w;
00097    unsigned char rex_r;
00098    unsigned char rex_x;
00099    unsigned char rex_b;
00100 
00101    int address_size;
00102    int imm_position[2];
00103    unsigned int imm_size[2];
00104 };
00105 
00106 #endif //!defined(IA32_LOCS_H)
00107 
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

Generated on 12 Jul 2013 for SymtabAPI by  doxygen 1.6.1