xref: /aosp_15_r20/external/capstone/bindings/python/pyx/ccapstone.pxd (revision 9a0e4156d50a75a99ec4f1653a0e9602a5d45c18)
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