ROSE  0.9.12.19
InstructionEnumsX86.h
1 /* Enum constants for Intel x86 architectures */
2 
3 #ifndef ROSE_BinaryAnalysis_InstructionEnumsX86_H
4 #define ROSE_BinaryAnalysis_InstructionEnumsX86_H
5 
6 #include "AssemblerX86Init.h" /* A big enum whose members are all possible x86 instructions. */
7 
8 namespace Rose {
9 namespace BinaryAnalysis {
10 
13  x86_insnsize_none,
17 };
18 
30 };
31 
34  x86_segreg_es = 0, // Numbering is based on Intel documentation
35  x86_segreg_cs = 1,
36  x86_segreg_ss = 2,
37  x86_segreg_ds = 3,
38  x86_segreg_fs = 4,
39  x86_segreg_gs = 5,
40  x86_segreg_none = 16 /* For unspecified segment overrides */
41 };
42 
45  x86_gpr_ax = 0, // Numbering is based on Intel documentation
46  x86_gpr_cx = 1,
47  x86_gpr_dx = 2,
48  x86_gpr_bx = 3,
49  x86_gpr_sp = 4,
50  x86_gpr_bp = 5,
51  x86_gpr_si = 6,
52  x86_gpr_di = 7,
53  x86_gpr_r8 = 8,
54  x86_gpr_r9 = 9,
55  x86_gpr_r10 = 10,
56  x86_gpr_r11 = 11,
57  x86_gpr_r12 = 12,
58  x86_gpr_r13 = 13,
59  x86_gpr_r14 = 14,
60  x86_gpr_r15 = 15
61 };
62 
65  x86_st_0 = 0,
66  x86_st_1 = 1,
67  x86_st_2 = 2,
68  x86_st_3 = 3,
69  x86_st_4 = 4,
70  x86_st_5 = 5,
71  x86_st_6 = 6,
72  x86_st_7 = 7,
73  x86_st_nregs = 8 // number of ST registers
74 };
75 
77 enum X86Flags {
78  x86_flags_status = 0, // general-purpose status flags
79  x86_flags_fpstatus = 1, // floating-point status flags
80  x86_flags_fptag = 2, // floating-point tag register
81  x86_flags_fpctl = 3, // floating-point control register
82  x86_flags_mxcsr = 4 // SSE control and status register
83 };
84 
86 enum X86Flag {
87  x86_flag_cf = 0,
88  x86_flag_pf = 2,
89  x86_flag_af = 4,
90  x86_flag_zf = 6,
91  x86_flag_sf = 7,
92  x86_flag_tf = 8,
93  x86_flag_if = 9,
94  x86_flag_df = 10,
95  x86_flag_of = 11,
96  x86_flag_iopl = 12, /* 2 bits, 12 and 13 */
97  x86_flag_nt = 14,
98  x86_flag_rf = 16,
99  x86_flag_vm = 17,
100  x86_flag_ac = 18,
101  x86_flag_vif = 19,
102  x86_flag_vip = 20,
103  x86_flag_id = 21
104 };
105 
108 {
109  x86_branch_prediction_none,
110  x86_branch_prediction_taken,
111  x86_branch_prediction_not_taken
112 };
113 
116 {
120 };
121 
151 };
152 
153 } // namespace
154 } // namespace
155 
156 #endif
Instruction pointer; Only allowed minor is zero.
Instruction is for a 64-bit architecture.
Minors are X86GeneralPurposeRegister (ax,cx,dx,bx,sp,bp,si,di,r8..r15)
Floating point stack or MM registers; Minors are 0-7.
128-bit xmmN; Minors are 0-7.
X86RegisterClass
Intel x86 major register numbers.
X86BranchPrediction
Intel x86 branch prediction types.
Minors are X86SegmentRegister (es,cs,ss,ds,fs,gs)
Control registers; Minors are 0-4, 8.
Main namespace for the ROSE library.
X86GeneralPurposeRegister
Intel x86 general purpose registers.
X86Flag
Intel x86 status flags.
Device not available (no math coproc).
Debug registers; Minors are 0-7.
Instruction is for a 32-bit architecture.
Instruction is for a 16-bit architecture.
Repeat not equal prefix 0xf2.
X86SegmentRegister
Intel x86 segment registers.
X86StRegister
Intel x86 ST-related registers.
SIMD floating-point numeric error.
X86Exception
Protected mode exceptions.
X86InstructionSize
Intel x86 instruction size constants.
X86RepeatPrefix
Intel x86 instruction repeat prefix.
Floating point error (math fault).
X86Flags
Minor numbers for x86_regclass_flag.