00001 #ifndef lestes__md__instructions__tm_instr_mdg_hh__included
00002 #define lestes__md__instructions__tm_instr_mdg_hh__included
00003
00004
00005
00006
00007
00008
00009
00010
00011 #include <lestes/md/common.hh>
00012 #include <lestes/std/objectize_macros.hh>
00013
00014 package(lestes);
00015 package(md);
00016 package(instructions);
00017
00018
00019
00020
00021 enum tm_instr_id_type {
00022 NO_INSTRUCTION_ID,
00023 INSTRUCTION_MOV__1,
00024 INSTRUCTION_MOV__2,
00025 INSTRUCTION_MOV__3,
00026 INSTRUCTION_MOV__4,
00027 INSTRUCTION_MOV__5,
00028 INSTRUCTION_MOV__7,
00029 INSTRUCTION_MOV__71,
00030 INSTRUCTION_MOV__8,
00031 INSTRUCTION_SYSMOV__9,
00032 INSTRUCTION_SYSMOV__10,
00033 INSTRUCTION_SYSMOV__11,
00034 INSTRUCTION_SAHF__1,
00035 INSTRUCTION_LAHF__1,
00036 INSTRUCTION_ADD__1,
00037 INSTRUCTION_ADD__11,
00038 INSTRUCTION_ADD__12,
00039 INSTRUCTION_ADD__13,
00040 INSTRUCTION_ADD__14,
00041 INSTRUCTION_SUB__1,
00042 INSTRUCTION_SUB__11,
00043 INSTRUCTION_SUB__12,
00044 INSTRUCTION_IMUL__1,
00045 INSTRUCTION_IMUL__2,
00046 INSTRUCTION_IMUL__21,
00047 INSTRUCTION_IMUL__22,
00048 INSTRUCTION_IMUL__23,
00049 INSTRUCTION_IMUL__24,
00050 INSTRUCTION_MUL__1,
00051 INSTRUCTION_MUL__11,
00052 INSTRUCTION_MUL__12,
00053 INSTRUCTION_MUL__2,
00054 INSTRUCTION_MUL__21,
00055 INSTRUCTION_MUL__22,
00056 INSTRUCTION_MUL__3,
00057 INSTRUCTION_MUL__31,
00058 INSTRUCTION_MUL__32,
00059 INSTRUCTION_CBW__1,
00060 INSTRUCTION_CWD__1,
00061 INSTRUCTION_CDQ__1,
00062 INSTRUCTION_DIV__1,
00063 INSTRUCTION_DIV__11,
00064 INSTRUCTION_DIV__2,
00065 INSTRUCTION_DIV__21,
00066 INSTRUCTION_DIV__3,
00067 INSTRUCTION_DIV__31,
00068 INSTRUCTION_NULLAH__1,
00069 INSTRUCTION_NULLDX__1,
00070 INSTRUCTION_NULLEDX__1,
00071 INSTRUCTION_IDIV__1,
00072 INSTRUCTION_IDIV__11,
00073 INSTRUCTION_IDIV__2,
00074 INSTRUCTION_IDIV__21,
00075 INSTRUCTION_IDIV__3,
00076 INSTRUCTION_IDIV__31,
00077 INSTRUCTION_NEG__1,
00078 INSTRUCTION_SHL__1,
00079 INSTRUCTION_SHR__1,
00080 INSTRUCTION_SAL__1,
00081 INSTRUCTION_SAR__1,
00082 INSTRUCTION_AND__1,
00083 INSTRUCTION_AND__11,
00084 INSTRUCTION_AND__12,
00085 INSTRUCTION_AND__13,
00086 INSTRUCTION_AND__14,
00087 INSTRUCTION_AND__2,
00088 INSTRUCTION_OR__1,
00089 INSTRUCTION_OR__11,
00090 INSTRUCTION_OR__12,
00091 INSTRUCTION_OR__13,
00092 INSTRUCTION_OR__14,
00093 INSTRUCTION_XOR__1,
00094 INSTRUCTION_XOR__11,
00095 INSTRUCTION_XOR__12,
00096 INSTRUCTION_XOR__13,
00097 INSTRUCTION_XOR__14,
00098 INSTRUCTION_XOR__2,
00099 INSTRUCTION_NOT__1,
00100 INSTRUCTION_CONVERT__1,
00101 INSTRUCTION_CONVERT__5,
00102 INSTRUCTION_CONVERT__2,
00103 INSTRUCTION_CONVERT__3,
00104 INSTRUCTION_MOVZX__1,
00105 INSTRUCTION_MOVZX__2,
00106 INSTRUCTION_MOVZX__3,
00107 INSTRUCTION_MOVZX__4,
00108 INSTRUCTION_MOVZX__5,
00109 INSTRUCTION_MOVZX__6,
00110 INSTRUCTION_MOVSX__1,
00111 INSTRUCTION_MOVSX__11,
00112 INSTRUCTION_MOVSX__2,
00113 INSTRUCTION_MOVSX__21,
00114 INSTRUCTION_LEA__1,
00115 INSTRUCTION_CMP__1,
00116 INSTRUCTION_CMP__2,
00117 INSTRUCTION_CMP__21,
00118 INSTRUCTION_CMP__22,
00119 INSTRUCTION_CMP__23,
00120 INSTRUCTION_CMP__24,
00121 INSTRUCTION_JMP__1,
00122 INSTRUCTION_JA__1,
00123 INSTRUCTION_JZ__1,
00124 INSTRUCTION_JG__1,
00125 INSTRUCTION_JL__1,
00126 INSTRUCTION_JB__1,
00127 INSTRUCTION_JE__1,
00128 INSTRUCTION_JNG__1,
00129 INSTRUCTION_JNA__1,
00130 INSTRUCTION_JNL__1,
00131 INSTRUCTION_JNB__1,
00132 INSTRUCTION_JNE__1,
00133 INSTRUCTION_SETG__1,
00134 INSTRUCTION_SETA__1,
00135 INSTRUCTION_SETL__1,
00136 INSTRUCTION_SETB__1,
00137 INSTRUCTION_SETE__1,
00138 INSTRUCTION_SETNG__1,
00139 INSTRUCTION_SETNA__1,
00140 INSTRUCTION_SETNL__1,
00141 INSTRUCTION_SETNB__1,
00142 INSTRUCTION_SETNE__1,
00143 INSTRUCTION_SETNZ__1,
00144 INSTRUCTION_PUSH__1,
00145 INSTRUCTION_PUSH__2,
00146 INSTRUCTION_PUSH__3,
00147 INSTRUCTION_POP__1,
00148 INSTRUCTION_NOP__1,
00149 INSTRUCTION_ESPADD__1,
00150 INSTRUCTION_BACKUPESP__1,
00151 INSTRUCTION_CALL__1,
00152 INSTRUCTION_PROLOGUE__1,
00153 INSTRUCTION_EPILOGUE__1,
00154 INSTRUCTION_LEAVE__1,
00155 INSTRUCTION_RET__1,
00156 TIIT_TERMINATOR
00157 };
00158
00159
00160
00161
00162
00163
00164
00165 enum tm_instr_op_id_type {
00166 NO_OPERAND_ID,
00167 I_1,
00168 I_2,
00169 I_3,
00170 I_4,
00171 I_5,
00172 I_6,
00173 I_7,
00174 I_8,
00175 I_9,
00176 O_1,
00177 O_2,
00178 O_3,
00179 O_4,
00180 O_5,
00181 O_6,
00182 O_7,
00183 O_8,
00184 O_9,
00185 TIOIT_TERMINATOR
00186 };
00187
00188
00189
00190
00191 enum tm_instr_property_key_type {
00192 NO_PROPERTY_KEY,
00193 PROPERTY_TEST_SIGNED,
00194 TIPKT_TERMINATOR
00195 };
00196
00197
00198 end_package(instructions);
00199 end_package(md);
00200
00201 package(std);
00202
00203 specialize_objectize_for_enum( ::lestes::md::instructions::tm_instr_op_id_type );
00204 specialize_objectize_for_enum( ::lestes::md::instructions::tm_instr_id_type );
00205 specialize_objectize_for_enum( ::lestes::md::instructions::tm_instr_property_key_type );
00206
00207 end_package(std);
00208 end_package(lestes);
00209
00210 #endif