xref: /aosp_15_r20/external/capstone/arch/X86/X86BaseInfo.h (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
1*9a0e4156SSadaf Ebrahimi //===-- X86BaseInfo.h - Top level definitions for X86 -------- --*- C++ -*-===//
2*9a0e4156SSadaf Ebrahimi //
3*9a0e4156SSadaf Ebrahimi //                     The LLVM Compiler Infrastructure
4*9a0e4156SSadaf Ebrahimi //
5*9a0e4156SSadaf Ebrahimi // This file is distributed under the University of Illinois Open Source
6*9a0e4156SSadaf Ebrahimi // License. See LICENSE.TXT for details.
7*9a0e4156SSadaf Ebrahimi //
8*9a0e4156SSadaf Ebrahimi //===----------------------------------------------------------------------===//
9*9a0e4156SSadaf Ebrahimi //
10*9a0e4156SSadaf Ebrahimi // This file contains small standalone helper functions and enum definitions for
11*9a0e4156SSadaf Ebrahimi // the X86 target useful for the compiler back-end and the MC libraries.
12*9a0e4156SSadaf Ebrahimi // As such, it deliberately does not include references to LLVM core
13*9a0e4156SSadaf Ebrahimi // code gen types, passes, etc..
14*9a0e4156SSadaf Ebrahimi //
15*9a0e4156SSadaf Ebrahimi //===----------------------------------------------------------------------===//
16*9a0e4156SSadaf Ebrahimi 
17*9a0e4156SSadaf Ebrahimi #ifndef CS_X86_BASEINFO_H
18*9a0e4156SSadaf Ebrahimi #define CS_X86_BASEINFO_H
19*9a0e4156SSadaf Ebrahimi 
20*9a0e4156SSadaf Ebrahimi /* Capstone Disassembly Engine */
21*9a0e4156SSadaf Ebrahimi /* By Nguyen Anh Quynh <[email protected]>, 2013-2015 */
22*9a0e4156SSadaf Ebrahimi 
23*9a0e4156SSadaf Ebrahimi // Enums for memory operand decoding.  Each memory operand is represented with
24*9a0e4156SSadaf Ebrahimi // a 5 operand sequence in the form:
25*9a0e4156SSadaf Ebrahimi //   [BaseReg, ScaleAmt, IndexReg, Disp, Segment]
26*9a0e4156SSadaf Ebrahimi // These enums help decode this.
27*9a0e4156SSadaf Ebrahimi enum {
28*9a0e4156SSadaf Ebrahimi 	X86_AddrBaseReg = 0,
29*9a0e4156SSadaf Ebrahimi 	X86_AddrScaleAmt = 1,
30*9a0e4156SSadaf Ebrahimi 	X86_AddrIndexReg = 2,
31*9a0e4156SSadaf Ebrahimi 	X86_AddrDisp = 3,
32*9a0e4156SSadaf Ebrahimi 
33*9a0e4156SSadaf Ebrahimi 	/// AddrSegmentReg - The operand # of the segment in the memory operand.
34*9a0e4156SSadaf Ebrahimi 	X86_AddrSegmentReg = 4,
35*9a0e4156SSadaf Ebrahimi 
36*9a0e4156SSadaf Ebrahimi 	/// AddrNumOperands - Total number of operands in a memory reference.
37*9a0e4156SSadaf Ebrahimi 	X86_AddrNumOperands = 5
38*9a0e4156SSadaf Ebrahimi };
39*9a0e4156SSadaf Ebrahimi 
40*9a0e4156SSadaf Ebrahimi #endif
41