1*9a0e4156SSadaf Ebrahimi /* Capstone Disassembly Engine */ 2*9a0e4156SSadaf Ebrahimi /* By Nguyen Anh Quynh <[email protected]>, 2013-2015 */ 3*9a0e4156SSadaf Ebrahimi 4*9a0e4156SSadaf Ebrahimi #ifndef CS_PPC_MAP_H 5*9a0e4156SSadaf Ebrahimi #define CS_PPC_MAP_H 6*9a0e4156SSadaf Ebrahimi 7*9a0e4156SSadaf Ebrahimi #include "capstone/capstone.h" 8*9a0e4156SSadaf Ebrahimi 9*9a0e4156SSadaf Ebrahimi // return name of regiser in friendly string 10*9a0e4156SSadaf Ebrahimi const char *PPC_reg_name(csh handle, unsigned int reg); 11*9a0e4156SSadaf Ebrahimi 12*9a0e4156SSadaf Ebrahimi // given internal insn id, return public instruction info 13*9a0e4156SSadaf Ebrahimi void PPC_get_insn_id(cs_struct *h, cs_insn *insn, unsigned int id); 14*9a0e4156SSadaf Ebrahimi 15*9a0e4156SSadaf Ebrahimi const char *PPC_insn_name(csh handle, unsigned int id); 16*9a0e4156SSadaf Ebrahimi const char *PPC_group_name(csh handle, unsigned int id); 17*9a0e4156SSadaf Ebrahimi 18*9a0e4156SSadaf Ebrahimi // map internal raw register to 'public' register 19*9a0e4156SSadaf Ebrahimi ppc_reg PPC_map_register(unsigned int r); 20*9a0e4156SSadaf Ebrahimi 21*9a0e4156SSadaf Ebrahimi struct ppc_alias { 22*9a0e4156SSadaf Ebrahimi unsigned int id; // instruction id 23*9a0e4156SSadaf Ebrahimi int cc; // code condition 24*9a0e4156SSadaf Ebrahimi const char *mnem; 25*9a0e4156SSadaf Ebrahimi }; 26*9a0e4156SSadaf Ebrahimi 27*9a0e4156SSadaf Ebrahimi // given alias mnemonic, return instruction ID & CC 28*9a0e4156SSadaf Ebrahimi bool PPC_alias_insn(const char *name, struct ppc_alias *alias); 29*9a0e4156SSadaf Ebrahimi 30*9a0e4156SSadaf Ebrahimi // check if this insn is relative branch 31*9a0e4156SSadaf Ebrahimi bool PPC_abs_branch(cs_struct *h, unsigned int id); 32*9a0e4156SSadaf Ebrahimi 33*9a0e4156SSadaf Ebrahimi #endif 34*9a0e4156SSadaf Ebrahimi 35