X86Module.c
Go to the documentation of this file.
1 /* Capstone Disassembly Engine */
2 /* By Dang Hoang Vu <danghvu@gmail.com> 2013 */
3 
4 #ifdef CAPSTONE_HAS_X86
5 
6 #include "../../cs_priv.h"
7 #include "../../MCRegisterInfo.h"
8 #include "X86Disassembler.h"
9 #include "X86InstPrinter.h"
10 #include "X86Mapping.h"
11 #include "X86Module.h"
12 
13 cs_err X86_global_init(cs_struct *ud)
14 {
15  MCRegisterInfo *mri;
16  mri = cs_mem_malloc(sizeof(*mri));
17 
18  X86_init(mri);
19 
20  // by default, we use Intel syntax
23  ud->printer_info = mri;
25  ud->reg_name = X86_reg_name;
29  ud->post_printer = NULL;;
30 #ifndef CAPSTONE_DIET
32 #endif
33 
34  if (ud->mode == CS_MODE_64)
36  else
38 
39  return CS_ERR_OK;
40 }
41 
43 {
44  switch(type) {
45  default:
46  break;
47  case CS_OPT_MODE:
48  if (value == CS_MODE_64)
49  handle->regsize_map = regsize_map_64;
50  else
51  handle->regsize_map = regsize_map_32;
52 
53  handle->mode = (cs_mode)value;
54  break;
55  case CS_OPT_SYNTAX:
56  switch(value) {
57  default:
58  // wrong syntax value
59  handle->errnum = CS_ERR_OPTION;
60  return CS_ERR_OPTION;
61 
64  handle->syntax = CS_OPT_SYNTAX_INTEL;
65  handle->printer = X86_Intel_printInst;
66  break;
67 
68  case CS_OPT_SYNTAX_MASM:
69  handle->printer = X86_Intel_printInst;
70  handle->syntax = (int)value;
71  break;
72 
73  case CS_OPT_SYNTAX_ATT:
74 #if !defined(CAPSTONE_DIET) && !defined(CAPSTONE_X86_ATT_DISABLE)
75  handle->printer = X86_ATT_printInst;
76  handle->syntax = CS_OPT_SYNTAX_ATT;
77  break;
78 #elif !defined(CAPSTONE_DIET) && defined(CAPSTONE_X86_ATT_DISABLE)
79  // ATT syntax is unsupported
80  handle->errnum = CS_ERR_X86_ATT;
81  return CS_ERR_X86_ATT;
82 #else // CAPSTONE_DIET
83  // this is irrelevant in CAPSTONE_DIET mode
84  handle->errnum = CS_ERR_DIET;
85  return CS_ERR_DIET;
86 #endif
87  }
88  break;
89  }
90 
91  return CS_ERR_OK;
92 }
93 
94 #endif
X86_insn_name
const char * X86_insn_name(csh handle, unsigned int id)
cs_struct::mode
cs_mode mode
Definition: cs_priv.h:53
cs_mem_malloc
cs_malloc_t cs_mem_malloc
Definition: cs.c:368
cs_opt_type
cs_opt_type
Runtime option for the disassembled engine.
Definition: capstone.h:169
CS_OPT_SYNTAX
@ CS_OPT_SYNTAX
Assembly output syntax.
Definition: capstone.h:171
X86Mapping.h
cs_struct::disasm
Disasm_t disasm
Definition: cs_priv.h:56
X86Disassembler.h
CS_OPT_SYNTAX_DEFAULT
@ CS_OPT_SYNTAX_DEFAULT
Default asm syntax (CS_OPT_SYNTAX).
Definition: capstone.h:185
X86_get_insn_id
void X86_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id)
X86_reg_name
const char * X86_reg_name(csh handle, unsigned int reg)
CS_OPT_SYNTAX_INTEL
@ CS_OPT_SYNTAX_INTEL
X86 Intel asm syntax - default on X86 (CS_OPT_SYNTAX).
Definition: capstone.h:186
X86_option
cs_err X86_option(cs_struct *handle, cs_opt_type type, size_t value)
X86InstPrinter.h
cs_struct
Definition: cs_priv.h:51
cs_mode
cs_mode
Mode type.
Definition: capstone.h:103
X86_Intel_printInst
void X86_Intel_printInst(MCInst *MI, SStream *OS, void *Info)
cs_struct::printer_info
void * printer_info
Definition: cs_priv.h:55
capstone.CS_ERR_OK
CS_ERR_OK
Definition: third_party/bloaty/third_party/capstone/bindings/python/capstone/__init__.py:237
xds_interop_client.int
int
Definition: xds_interop_client.py:113
cs_struct::insn_name
GetName_t insn_name
Definition: cs_priv.h:59
cs_struct::printer
Printer_t printer
Definition: cs_priv.h:54
regsize_map_64
const uint8_t regsize_map_64[]
capstone.CS_ERR_DIET
CS_ERR_DIET
Definition: third_party/bloaty/third_party/capstone/bindings/python/capstone/__init__.py:247
CS_OPT_SYNTAX_ATT
@ CS_OPT_SYNTAX_ATT
X86 ATT asm syntax (CS_OPT_SYNTAX).
Definition: capstone.h:187
capstone.CS_ERR_X86_ATT
CS_ERR_X86_ATT
Definition: third_party/bloaty/third_party/capstone/bindings/python/capstone/__init__.py:249
value
const char * value
Definition: hpack_parser_table.cc:165
cs_struct::syntax
int syntax
Definition: cs_priv.h:66
X86_getInstruction
bool X86_getInstruction(csh handle, const uint8_t *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info)
X86_init
void X86_init(MCRegisterInfo *MRI)
CS_MODE_64
@ CS_MODE_64
64-bit mode (X86, PPC)
Definition: capstone.h:108
cs_struct::regsize_map
const uint8_t * regsize_map
Definition: cs_priv.h:73
regsize_map_32
const uint8_t regsize_map_32[]
X86_reg_access
void X86_reg_access(const cs_insn *insn, cs_regs regs_read, uint8_t *regs_read_count, cs_regs regs_write, uint8_t *regs_write_count)
cs_struct::insn_id
GetID_t insn_id
Definition: cs_priv.h:61
cs_struct::group_name
GetName_t group_name
Definition: cs_priv.h:60
X86Module.h
X86_group_name
const char * X86_group_name(csh handle, unsigned int id)
cs_struct::reg_name
GetName_t reg_name
Definition: cs_priv.h:58
cs_struct::reg_access
GetRegisterAccess_t reg_access
Definition: cs_priv.h:74
cs_struct::post_printer
PostPrinter_t post_printer
Definition: cs_priv.h:62
handle
static csh handle
Definition: test_arm_regression.c:16
X86_global_init
cs_err X86_global_init(cs_struct *ud)
CS_OPT_MODE
@ CS_OPT_MODE
Change engine's mode at run-time.
Definition: capstone.h:173
capstone.CS_ERR_OPTION
CS_ERR_OPTION
Definition: third_party/bloaty/third_party/capstone/bindings/python/capstone/__init__.py:243
MCRegisterInfo
Definition: MCRegisterInfo.h:78
asyncio_get_stats.type
type
Definition: asyncio_get_stats.py:37
CS_OPT_SYNTAX_MASM
@ CS_OPT_SYNTAX_MASM
X86 Intel Masm syntax (CS_OPT_SYNTAX).
Definition: capstone.h:189
X86_ATT_printInst
void X86_ATT_printInst(MCInst *MI, SStream *OS, void *Info)


grpc
Author(s):
autogenerated on Thu Mar 13 2025 03:01:54