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