| //===-- X86BaseInfo.h - Top level definitions for X86 -------- --*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file is distributed under the University of Illinois Open Source |
| // License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file contains small standalone helper functions and enum definitions for |
| // the X86 target useful for the compiler back-end and the MC libraries. |
| // As such, it deliberately does not include references to LLVM core |
| // code gen types, passes, etc.. |
| // |
| //===----------------------------------------------------------------------===// |
| |
| #ifndef CS_X86_BASEINFO_H |
| #define CS_X86_BASEINFO_H |
| |
| /* Capstone Disassembly Engine */ |
| /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2014 */ |
| |
| // Enums for memory operand decoding. Each memory operand is represented with |
| // a 5 operand sequence in the form: |
| // [BaseReg, ScaleAmt, IndexReg, Disp, Segment] |
| // These enums help decode this. |
| enum { |
| X86_AddrBaseReg = 0, |
| X86_AddrScaleAmt = 1, |
| X86_AddrIndexReg = 2, |
| X86_AddrDisp = 3, |
| |
| /// AddrSegmentReg - The operand # of the segment in the memory operand. |
| X86_AddrSegmentReg = 4, |
| |
| /// AddrNumOperands - Total number of operands in a memory reference. |
| X86_AddrNumOperands = 5 |
| }; |
| |
| #endif |