ROSE  0.9.9.109
InstructionEnumsX86.h
1 /* Enum constants for Intel x86 architectures */
2 
3 #ifndef ROSE_ENUMS_X86
4 #define ROSE_ENUMS_X86
5 
6 #include "AssemblerX86Init.h" /* A big enum whose members are all possible x86 instructions. */
7 
9 enum X86InstructionSize {
10  x86_insnsize_none,
11  x86_insnsize_16,
12  x86_insnsize_32,
13  x86_insnsize_64
14 };
15 
17 enum X86RegisterClass {
18  x86_regclass_gpr,
20  x86_regclass_segment,
21  x86_regclass_cr,
22  x86_regclass_dr,
23  x86_regclass_st,
24  x86_regclass_xmm,
25  x86_regclass_ip,
26  x86_regclass_flags
27 };
28 
30 enum X86SegmentRegister {
31  x86_segreg_es = 0, // Numbering is based on Intel documentation
32  x86_segreg_cs = 1,
33  x86_segreg_ss = 2,
34  x86_segreg_ds = 3,
35  x86_segreg_fs = 4,
36  x86_segreg_gs = 5,
37  x86_segreg_none = 16 /* For unspecified segment overrides */
38 };
39 
41 enum X86GeneralPurposeRegister {
42  x86_gpr_ax = 0, // Numbering is based on Intel documentation
43  x86_gpr_cx = 1,
44  x86_gpr_dx = 2,
45  x86_gpr_bx = 3,
46  x86_gpr_sp = 4,
47  x86_gpr_bp = 5,
48  x86_gpr_si = 6,
49  x86_gpr_di = 7,
50  x86_gpr_r8 = 8,
51  x86_gpr_r9 = 9,
52  x86_gpr_r10 = 10,
53  x86_gpr_r11 = 11,
54  x86_gpr_r12 = 12,
55  x86_gpr_r13 = 13,
56  x86_gpr_r14 = 14,
57  x86_gpr_r15 = 15
58 };
59 
61 enum X86StRegister {
62  x86_st_0 = 0,
63  x86_st_1 = 1,
64  x86_st_2 = 2,
65  x86_st_3 = 3,
66  x86_st_4 = 4,
67  x86_st_5 = 5,
68  x86_st_6 = 6,
69  x86_st_7 = 7,
70  x86_st_nregs = 8 // number of ST registers
71 };
72 
74 enum X86Flags {
75  x86_flags_status = 0, // general-purpose status flags
76  x86_flags_fpstatus = 1, // floating-point status flags
77  x86_flags_fptag = 2, // floating-point tag register
78  x86_flags_fpctl = 3, // floating-point control register
79  x86_flags_mxcsr = 4 // SSE control and status register
80 };
81 
83 enum X86Flag {
84  x86_flag_cf = 0,
85  x86_flag_pf = 2,
86  x86_flag_af = 4,
87  x86_flag_zf = 6,
88  x86_flag_sf = 7,
89  x86_flag_tf = 8,
90  x86_flag_if = 9,
91  x86_flag_df = 10,
92  x86_flag_of = 11,
93  x86_flag_iopl = 12, /* 2 bits, 12 and 13 */
94  x86_flag_nt = 14,
95  x86_flag_rf = 16,
96  x86_flag_vm = 17,
97  x86_flag_ac = 18,
98  x86_flag_vif = 19,
99  x86_flag_vip = 20,
100  x86_flag_id = 21
101 };
102 
104 enum X86BranchPrediction
105 {
106  x86_branch_prediction_none,
107  x86_branch_prediction_taken,
108  x86_branch_prediction_not_taken
109 };
110 
112 enum X86RepeatPrefix
113 {
114  x86_repeat_none,
115  x86_repeat_repne,
116  x86_repeat_repe
117 };
118 
121 enum X86Exception {
122  x86_exception_int,
123  x86_exception_sysenter,
124  x86_exception_syscall,
125  x86_exception_de,
126  x86_exception_db,
127  x86_exception_bp,
128  x86_exception_of,
129  x86_exception_br,
130  x86_exception_ud,
131  x86_exception_nm,
133  x86_exception_df,
135  x86_exception_ts,
136  x86_exception_np,
138  x86_exception_ss,
139  x86_exception_gp,
141  x86_exception_pf,
142  x86_exception_mf,
144  x86_exception_ac,
145  x86_exception_mc,
146  x86_exception_xm
148 };
149 
150 #endif