1*9a0e4156SSadaf Ebrahimi# By Dang Hoang Vu <[email protected]>, 2014 2*9a0e4156SSadaf Ebrahimi 3*9a0e4156SSadaf Ebrahimifrom libcpp cimport bool 4*9a0e4156SSadaf Ebrahimifrom libc.stdint cimport uint8_t, uint64_t, uint16_t 5*9a0e4156SSadaf Ebrahimi 6*9a0e4156SSadaf Ebrahimicdef extern from "<capstone/capstone.h>": 7*9a0e4156SSadaf Ebrahimi 8*9a0e4156SSadaf Ebrahimi ctypedef size_t csh 9*9a0e4156SSadaf Ebrahimi 10*9a0e4156SSadaf Ebrahimi ctypedef enum cs_mode: 11*9a0e4156SSadaf Ebrahimi pass 12*9a0e4156SSadaf Ebrahimi 13*9a0e4156SSadaf Ebrahimi ctypedef enum cs_arch: 14*9a0e4156SSadaf Ebrahimi pass 15*9a0e4156SSadaf Ebrahimi 16*9a0e4156SSadaf Ebrahimi ctypedef struct cs_detail: 17*9a0e4156SSadaf Ebrahimi pass 18*9a0e4156SSadaf Ebrahimi 19*9a0e4156SSadaf Ebrahimi ctypedef struct cs_insn: 20*9a0e4156SSadaf Ebrahimi unsigned int id 21*9a0e4156SSadaf Ebrahimi uint64_t address 22*9a0e4156SSadaf Ebrahimi uint16_t size 23*9a0e4156SSadaf Ebrahimi uint8_t bytes[24] 24*9a0e4156SSadaf Ebrahimi char mnemonic[32] 25*9a0e4156SSadaf Ebrahimi char op_str[160] 26*9a0e4156SSadaf Ebrahimi cs_detail *detail 27*9a0e4156SSadaf Ebrahimi 28*9a0e4156SSadaf Ebrahimi ctypedef enum cs_err: 29*9a0e4156SSadaf Ebrahimi pass 30*9a0e4156SSadaf Ebrahimi 31*9a0e4156SSadaf Ebrahimi ctypedef enum cs_opt_type: 32*9a0e4156SSadaf Ebrahimi pass 33*9a0e4156SSadaf Ebrahimi 34*9a0e4156SSadaf Ebrahimi unsigned int cs_version(int *major, int *minor) 35*9a0e4156SSadaf Ebrahimi 36*9a0e4156SSadaf Ebrahimi bool cs_support(int arch) 37*9a0e4156SSadaf Ebrahimi 38*9a0e4156SSadaf Ebrahimi cs_err cs_open(cs_arch arch, cs_mode mode, csh *handle) 39*9a0e4156SSadaf Ebrahimi 40*9a0e4156SSadaf Ebrahimi cs_err cs_close(csh *handle) 41*9a0e4156SSadaf Ebrahimi 42*9a0e4156SSadaf Ebrahimi cs_err cs_errno(csh handle) 43*9a0e4156SSadaf Ebrahimi 44*9a0e4156SSadaf Ebrahimi size_t cs_disasm(csh handle, 45*9a0e4156SSadaf Ebrahimi const uint8_t *code, size_t code_size, 46*9a0e4156SSadaf Ebrahimi uint64_t address, 47*9a0e4156SSadaf Ebrahimi size_t count, 48*9a0e4156SSadaf Ebrahimi cs_insn **insn) 49*9a0e4156SSadaf Ebrahimi 50*9a0e4156SSadaf Ebrahimi cs_err cs_option(csh handle, cs_opt_type type, size_t value) 51*9a0e4156SSadaf Ebrahimi 52*9a0e4156SSadaf Ebrahimi void cs_free(cs_insn *insn, size_t count) 53*9a0e4156SSadaf Ebrahimi 54*9a0e4156SSadaf Ebrahimi const char *cs_reg_name(csh handle, unsigned int reg_id) 55*9a0e4156SSadaf Ebrahimi 56*9a0e4156SSadaf Ebrahimi const char *cs_insn_name(csh handle, unsigned int insn_id) 57*9a0e4156SSadaf Ebrahimi 58*9a0e4156SSadaf Ebrahimi const char *cs_group_name(csh handle, unsigned int group_id) 59*9a0e4156SSadaf Ebrahimi 60*9a0e4156SSadaf Ebrahimi bool cs_insn_group(csh handle, cs_insn *insn, unsigned int group_id) 61*9a0e4156SSadaf Ebrahimi 62*9a0e4156SSadaf Ebrahimi bool cs_reg_read(csh handle, cs_insn *insn, unsigned int reg_id) 63*9a0e4156SSadaf Ebrahimi 64*9a0e4156SSadaf Ebrahimi bool cs_reg_write(csh handle, cs_insn *insn, unsigned int reg_id) 65*9a0e4156SSadaf Ebrahimi 66*9a0e4156SSadaf Ebrahimi int cs_op_count(csh handle, cs_insn *insn, unsigned int op_type) 67*9a0e4156SSadaf Ebrahimi 68*9a0e4156SSadaf Ebrahimi cs_err cs_regs_access(csh handle, cs_insn *insn, uint16_t *regs_read, uint8_t *read_count, uint16_t *regs_write, uint8_t *write_count) 69*9a0e4156SSadaf Ebrahimi 70*9a0e4156SSadaf Ebrahimi int cs_op_index(csh handle, cs_insn *insn, unsigned int op_type, 71*9a0e4156SSadaf Ebrahimi unsigned int position) 72*9a0e4156SSadaf Ebrahimi 73