OSDN Git Service

libintel64asm init
[drdeamon64/drdeamon64.git] / libintel64asm / drd64_intel64_dbfile.h
1 /*DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64
2
3                          D r . D e a m o n  6 4
4                         for INTEL64(R), AMD64(R)
5     
6    Copyright(C) 2007-2009 Koine Yuusuke(koinec). All rights reserved.
7
8 Redistribution and use in source and binary forms, with or without
9 modification, are permitted provided that the following conditions are met:
10
11  1. Redistributions of source code must retain the above copyright notice,
12     this list of conditions and the following disclaimer.
13  2. Redistributions in binary form must reproduce the above copyright
14     notice, this list of conditions and the following disclaimer in the
15     documentation and/or other materials provided with the distribution.
16
17 THIS SOFTWARE IS PROVIDED BY Koine Yuusuke(koinec) ``AS IS'' AND ANY
18 EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19 WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20 DISCLAIMED. IN NO EVENT SHALL Koine Yuusuke(koinec) OR CONTRIBUTORS BE
21 LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
22 CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
23 SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
24 INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
25 CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
26 ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
27 OF THE POSSIBILITY OF SUCH DAMAGE.
28
29 DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64DrDeAmOn64*/
30
31 /* File Info -----------------------------------------------------------
32 File: drd64_intel64_dbfile.h
33 Function: Intel64 DataBase Binary File Defines/Headers
34 Comment:  none
35 ----------------------------------------------------------------------*/
36
37
38 #ifndef DRD64_HEADER_INTEL64DBFILE
39 #define DRD64_HEADER_INTEL64DBFILE
40
41 #include"drd64_intel64.h"
42 #include"drd64_intel64_db.h"
43
44 #define DRD64_INTEL64DB_HASH_MUL        137
45 #define DRD64_INTEL64DB_HASH_RADIX      69
46
47 typedef struct {
48         int             i_num;
49         Byte    b_prefix;
50         Byte    b_rex;
51         int             i_opcodes;
52         Byte    b_opcode[3];
53         Byte    b_mod;
54         Byte    b_reg;
55         Byte    b_rm;
56         Byte    b_fpu;
57         Byte    b_bits;
58         char    str_instruction[MAX_INSTRUCTION];
59         Byte    b_option;
60         int             i_operands;
61         Word    w_desttype;
62         Word    w_destsize;     
63         Word    w_srctype;
64         Word    w_srcsize;
65         Word    w_optiontype;
66         Word    w_optionsize;
67         Byte    b_duplicationflag;
68         int             i_priority;
69         Word    w_restrict;
70         int             i_link;
71         int             i_search;
72         Byte    b_hash;
73 } __attribute((packed)) Drd64_Intel64db_FileRecord;
74
75
76 #define DRD64_INTEL64DB_FILEHEADER_STR          "DrDeamon64 BSD "
77 #define DRD64_INTEL64DB_FILEVERSION                     0x10
78 #define DRD64_INTEL64DB_FILEID                          0x8664
79 #define DRD64_INTEL64DB_INTEL64DBHEADER_STR     "INTEL64 NIMONIC "
80 #define DRD64_INTEL64DB_INTEL64DB_VERSION       0x0010
81
82 typedef struct {
83         char    str_drd64file_header[16];       /* "DrDeamon64 BSD \0" */
84         Byte    b_drd64file_version;            /* 0x10 */
85         Word    w_drd64file_id;                         /* */
86
87         char    str_intel64db_header[16];       /* "INTEL64 NIMONIC \0" */
88         Word    w_intel64db_version;            /* 0x0010 */
89         Word    w_lines;                                        
90         
91 } __attribute((packed)) Drd64_Intel64db_FileHeader;
92
93
94 /* C : [ModR/M:reg] Control Reg.  */
95 #define OPTYPE_DATA_METHOD_C_STR        "C"
96 /* D : [ModR/M:reg] Debug Reg. */
97 #define OPTYPE_DATA_METHOD_D_STR        "D"
98 /* G : [ModR/M:reg] General Reg. */
99 #define OPTYPE_DATA_METHOD_G_STR        "G"
100 /* P : [ModR/M:reg] Packed-QuadWord MMX Reg. */ 
101 #define OPTYPE_DATA_METHOD_P_STR        "P"
102 /* S : [ModR/M:reg] Segment Reg. */
103 #define OPTYPE_DATA_METHOD_S_STR        "S"
104 /* T : [ModR/M:reg] Test Reg. ( Reserved ) */
105 #define OPTYPE_DATA_METHOD_T_STR        "T"
106 /* V : [ModR/M:reg] 128bit XMM Reg. */
107 #define OPTYPE_DATA_METHOD_V_STR        "V"
108 /* N : [ModR/M:R/M] Packed-QuadWord MMX Reg. */
109 #define OPTYPE_DATA_METHOD_N_STR        "N"
110 /* R : [ModR/M:R/M] refer to General Reg by R/M Field */
111 #define OPTYPE_DATA_METHOD_R_STR        "R"
112 /* U : [ModR/M:R/M] 128bit XMM Reg. */
113 #define OPTYPE_DATA_METHOD_U_STR        "U"
114 /* E : [ModR/M] Memory & Reg. */
115 #define OPTYPE_DATA_METHOD_E_STR        "E"
116 /* W : [ModR/M] 128bit XMM Reg. or Memory Address 
117                 ( Memory Address calculated by Seg.Reg. BaseReg. IndexReg. 
118                         ScalingFactor, Displacement */
119 #define OPTYPE_DATA_METHOD_W_STR        "W"
120 /* Q : [ModR/M] MMX reg. or Memory Address 
121                 ( Memory Address calced by Seg.Reg, BaseReg. IndexReg. 
122                         ScalingFactor, Displacement */
123 #define OPTYPE_DATA_METHOD_Q_STR        "Q"
124 /* M : Memory Access (by ModR/M) (NO!!: Reg. Indicate by ModR/M) */
125 #define OPTYPE_DATA_METHOD_M_STR        "M"
126
127 /* A : Direct Address (NO!!: ModR/M, BaseReg, IndexReg, ScalingFactor) */
128 #define OPTYPE_DATA_METHOD_A_STR        "A"
129 /* I : Immediate Data (NO!!: ModR/M) */
130 #define OPTYPE_DATA_METHOD_I_STR        "I"
131 /* J : IP relative Address (NO!!: ModR/M) */
132 #define OPTYPE_DATA_METHOD_J_STR        "J"
133 /* O : Word of DWord Data (NO!!: ModR/M, BaseReg. IndexReg, ScalingFactor */
134 #define OPTYPE_DATA_METHOD_O_STR        "O"
135 /* F : EFLAGS / RFLAGS Reg. (NO!!: ModR/M)  */
136 #define OPTYPE_DATA_METHOD_F_STR        "F"
137 /* X : DS:rSI (Memory Address) */
138 #define OPTYPE_DATA_METHOD_X_STR        "X"
139 /* Y : ES:rDI (Memory Address) */
140 #define OPTYPE_DATA_METHOD_Y_STR        "Y"
141
142 /* 1 : 0x01 Data (Immediate Data) */
143 #define OPTYPE_DATA_METHOD_1_STR        "1"
144 /* - : Illegal Instruction by DrDeamon64 Assembler System */
145 #define OPTYPE_DATA_METHOD_ILLEGAL_STR  "-"
146
147 /* b : Byte (Regardless Operand Size Attribute) */
148 #define OPSIZE_B_STR    "b"
149 /* w : Word (Regardless Operand Size Attribute) */
150 #define OPSIZE_W_STR    "w"
151 /* d : DWord (Regardless Operand Size Attribute) */
152 #define OPSIZE_D_STR    "d"
153 /* q : QuadWord(64bit) (Regardless Operand Size Attribute) */
154 #define OPSIZE_Q_STR    "q"
155 /* dq : Double QuadWord(128Bit) (Regardless Operand Size Attribute) */
156 #define OPSIZE_DQ_STR   "dq"
157 /* h : Memory Pointer for 94/108bit */
158 #define OPSIZE_H_STR    "h"
159 /* p : Memory Pointer for 32bit or 48bit (depend on Operand Size Attribute) */
160 #define OPSIZE_P_STR    "p"
161 /* r : Memory Pointer for 14bit / 28bit */
162 #define OPSIZE_R_STR    "r"
163 /* t : Memory Pointer for 80bit */
164 #define OPSIZE_T_STR    "t"
165 /* pd : 128bit Packed double-float Data */
166 #define OPSIZE_PD_STR   "pd"
167 /* ps : 128bit Packed float Data */
168 #define OPSIZE_PS_STR   "ps"
169 /* sd : Scalar Element of 128bit Packed Double-float Data */
170 #define OPSIZE_SD_STR   "sd"
171 /* ss : Scalar Element of 128bit Packed float Data */
172 #define OPSIZE_SS_STR   "ss"
173 /* s : 6Byte or 10 Byte Pseudo Descriptor */
174 #define OPSIZE_S_STR    "s"
175 /* v : Word, DWord, QuadWord(64bit-ModeOnly) (Depend On Operand Size Attribute)*/
176 #define OPSIZE_V_STR    "v"
177 /* z : Word(16bit Operand Size) or DWord(32/64 Operand Size) */
178 #define OPSIZE_Z_STR    "z"
179 /* a : 2 Word or 2 DWord in Memory ( for BOUND ) */
180 #define OPSIZE_A_STR    "a"
181
182 #define OPSIZE_ILLEGAL_STR              "-"     
183
184
185 #endif  /* DRD64_HEADER_INTEL64DBFILE */
186
187 /* EOF of drd64_intel64_dbfile.h --------------------------------------*/
188