1 /* Capstone Disassembly Engine */
2 /* By Nguyen Anh Quynh <aquynh@gmail.com>, 2013-2019 */
3 
4 #ifndef CS_ARM_MAP_H
5 #define CS_ARM_MAP_H
6 
7 #include "../../include/capstone/capstone.h"
8 #include "../../utils.h"
9 
10 // return name of regiser in friendly string
11 const char *ARM_reg_name(csh handle, unsigned int reg);
12 const char *ARM_reg_name2(csh handle, unsigned int reg);
13 
14 // given internal insn id, return public instruction ID
15 void ARM_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id);
16 
17 const char *ARM_insn_name(csh handle, unsigned int id);
18 
19 const char *ARM_group_name(csh handle, unsigned int id);
20 
21 // check if this insn is relative branch
22 bool ARM_rel_branch(cs_struct *h, unsigned int insn_id);
23 
24 bool ARM_blx_to_arm_mode(cs_struct *h, unsigned int insn_id);
25 
26 const uint8_t *ARM_get_op_access(cs_struct *h, unsigned int id);
27 
28 void ARM_reg_access(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 typedef struct BankedReg {
33 	const char *Name;
34 	arm_sysreg sysreg;
35 	uint16_t Encoding;
36 } BankedReg;
37 
38 const BankedReg *lookupBankedRegByEncoding(uint8_t encoding);
39 
40 #endif
41