cs_priv.h
Go to the documentation of this file.
1 /* Capstone Disassembly Engine */
2 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2015 */
3 
4 #ifndef CS_PRIV_H
5 #define CS_PRIV_H
6 
7 #include <capstone/capstone.h>
8 
9 #include "MCInst.h"
10 #include "SStream.h"
11 
12 typedef void (*Printer_t)(MCInst *MI, SStream *OS, void *info);
13 
14 // function to be called after Printer_t
15 // this is the best time to gather insn's characteristics
16 typedef void (*PostPrinter_t)(csh handle, cs_insn *, char *mnem, MCInst *mci);
17 
18 typedef bool (*Disasm_t)(csh handle, const uint8_t *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info);
19 
20 typedef const char *(*GetName_t)(csh handle, unsigned int id);
21 
22 typedef void (*GetID_t)(cs_struct *h, cs_insn *insn, unsigned int id);
23 
24 // return register name, given register ID
25 typedef const char *(*GetRegisterName_t)(unsigned RegNo);
26 
27 // return registers accessed by instruction
28 typedef void (*GetRegisterAccess_t)(const cs_insn *insn,
29  cs_regs regs_read, uint8_t *regs_read_count,
30  cs_regs regs_write, uint8_t *regs_write_count);
31 
32 // for ARM only
33 typedef struct ARM_ITStatus {
34  unsigned char ITStates[8];
35  unsigned int size;
36 } ARM_ITStatus;
37 
38 // Customize mnemonic for instructions with alternative name.
40  // ID of instruction to be customized.
41  unsigned int id;
42  // Customized instruction mnemonic.
44 };
45 
46 struct insn_mnem {
48  struct insn_mnem *next; // linked list of customized mnemonics
49 };
50 
51 struct cs_struct {
54  Printer_t printer; // asm printer
55  void *printer_info; // aux info for printer
56  Disasm_t disasm; // disassembler
57  void *getinsn_info; // auxiliary info for printer
63  cs_err errnum;
64  ARM_ITStatus ITBlock; // for Arm only
66  int syntax; // asm syntax for simple printer such as ARM, Mips & PPC
67  bool doing_mem; // handling memory operand in InstPrinter code
68  unsigned short *insn_cache; // index caching for mapping.c
70  bool skipdata; // set this to True if we skip data when disassembling
71  uint8_t skipdata_size; // how many bytes to skip
72  cs_opt_skipdata skipdata_setup; // user-defined skipdata setup
73  const uint8_t *regsize_map; // map to register size (x86-only for now)
75  struct insn_mnem *mnem_list; // linked list of customized instruction mnemonic
76 };
77 
78 #define MAX_ARCH CS_ARCH_MAX
79 
80 // Returns a bool (0 or 1) whether big endian is enabled for a mode
81 #define MODE_IS_BIG_ENDIAN(mode) (((mode) & CS_MODE_BIG_ENDIAN) != 0)
82 
86 extern cs_free_t cs_mem_free;
88 
89 #endif
cs_struct::mnem_list
struct insn_mnem * mnem_list
Definition: cs_priv.h:75
cs_struct::skipdata_setup
cs_opt_skipdata skipdata_setup
Definition: cs_priv.h:72
CS_MNEMONIC_SIZE
#define CS_MNEMONIC_SIZE
Maximum size of an instruction mnemonic string.
Definition: capstone.h:68
Disasm_t
bool(* Disasm_t)(csh handle, const uint8_t *code, size_t code_len, MCInst *instr, uint16_t *size, uint64_t address, void *info)
Definition: cs_priv.h:18
cs_struct::mode
cs_mode mode
Definition: cs_priv.h:53
cs_struct::doing_mem
bool doing_mem
Definition: cs_priv.h:67
cs_mem_realloc
cs_realloc_t cs_mem_realloc
Definition: cs.c:370
ARM_ITStatus::size
unsigned int size
Definition: cs_priv.h:35
bool
bool
Definition: setup_once.h:312
GetID_t
void(* GetID_t)(cs_struct *h, cs_insn *insn, unsigned int id)
Definition: cs_priv.h:22
cs_struct::imm_unsigned
cs_opt_value imm_unsigned
Definition: cs_priv.h:65
insn_mnem::next
struct insn_mnem * next
Definition: cs_priv.h:48
uint16_t
unsigned short uint16_t
Definition: stdint-msvc2008.h:79
cs_struct::errnum
cs_err errnum
Definition: cs_priv.h:63
cs_vsnprintf
cs_vsnprintf_t cs_vsnprintf
Definition: cs.c:372
cs_struct::disasm
Disasm_t disasm
Definition: cs_priv.h:56
customized_mnem::mnemonic
char mnemonic[CS_MNEMONIC_SIZE]
Definition: cs_priv.h:43
PostPrinter_t
void(* PostPrinter_t)(csh handle, cs_insn *, char *mnem, MCInst *mci)
Definition: cs_priv.h:16
ARM_ITStatus::ITStates
unsigned char ITStates[8]
Definition: cs_priv.h:34
cs_arch
cs_arch
Architecture type.
Definition: capstone.h:74
cs_struct::insn_cache
unsigned short * insn_cache
Definition: cs_priv.h:68
SStream.h
cs_realloc_t
void *(CAPSTONE_API * cs_realloc_t)(void *ptr, size_t size)
Definition: capstone.h:142
insn_mnem
Definition: cs_priv.h:46
uint8_t
unsigned char uint8_t
Definition: stdint-msvc2008.h:78
grpc_status._async.code
code
Definition: grpcio_status/grpc_status/_async.py:34
cs_free_t
void(CAPSTONE_API * cs_free_t)(void *ptr)
Definition: capstone.h:143
insn_mnem::insn
struct customized_mnem insn
Definition: cs_priv.h:47
cs_struct
Definition: cs_priv.h:51
cs_mode
cs_mode
Mode type.
Definition: capstone.h:103
capstone.h
cs_struct::get_regname
GetRegisterName_t get_regname
Definition: cs_priv.h:69
MCInst.h
cs_struct::printer_info
void * printer_info
Definition: cs_priv.h:55
SStream
Definition: SStream.h:9
cs_struct::arch
cs_arch arch
Definition: cs_priv.h:52
cs_struct::insn_name
GetName_t insn_name
Definition: cs_priv.h:59
cs_opt_value
cs_opt_value
Runtime option value (associated with option type above)
Definition: capstone.h:182
cs_mem_calloc
cs_calloc_t cs_mem_calloc
Definition: cs.c:369
cs_struct::getinsn_info
void * getinsn_info
Definition: cs_priv.h:57
cs_struct::printer
Printer_t printer
Definition: cs_priv.h:54
uint64_t
unsigned __int64 uint64_t
Definition: stdint-msvc2008.h:90
GetRegisterAccess_t
void(* GetRegisterAccess_t)(const cs_insn *insn, cs_regs regs_read, uint8_t *regs_read_count, cs_regs regs_write, uint8_t *regs_write_count)
Definition: cs_priv.h:28
cs_struct::detail
cs_opt_value detail
Definition: cs_priv.h:65
cs_mem_malloc
cs_malloc_t cs_mem_malloc
Definition: cs.c:368
cs_struct::ITBlock
ARM_ITStatus ITBlock
Definition: cs_priv.h:64
customized_mnem
Definition: cs_priv.h:39
ARM_ITStatus
struct ARM_ITStatus ARM_ITStatus
csh
size_t csh
Definition: capstone.h:71
cs_struct::syntax
int syntax
Definition: cs_priv.h:66
MCInst
Definition: MCInst.h:88
OS
#define OS
Definition: config_freebsd/ares_config.h:360
cs_struct::skipdata
bool skipdata
Definition: cs_priv.h:70
cs_calloc_t
void *(CAPSTONE_API * cs_calloc_t)(size_t nmemb, size_t size)
Definition: capstone.h:141
cs_mem_free
cs_free_t cs_mem_free
Definition: cs.c:371
customized_mnem::id
unsigned int id
Definition: cs_priv.h:41
cs_struct::skipdata_size
uint8_t skipdata_size
Definition: cs_priv.h:71
cs_struct::regsize_map
const uint8_t * regsize_map
Definition: cs_priv.h:73
cs_malloc_t
void *(CAPSTONE_API * cs_malloc_t)(size_t size)
Definition: capstone.h:140
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
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
GetName_t
const typedef char *(* GetName_t)(csh handle, unsigned int id)
Definition: cs_priv.h:20
size
voidpf void uLong size
Definition: bloaty/third_party/zlib/contrib/minizip/ioapi.h:136
GetRegisterName_t
const typedef char *(* GetRegisterName_t)(unsigned RegNo)
Definition: cs_priv.h:25
cs_vsnprintf_t
int(CAPSTONE_API * cs_vsnprintf_t)(char *str, size_t size, const char *format, va_list ap)
Definition: capstone.h:144
Printer_t
void(* Printer_t)(MCInst *MI, SStream *OS, void *info)
Definition: cs_priv.h:12
id
uint32_t id
Definition: flow_control_fuzzer.cc:70
ARM_ITStatus
Definition: cs_priv.h:33


grpc
Author(s):
autogenerated on Thu Mar 13 2025 02:59:01