/* Capstone Disassembler Engine */ /* By Nguyen Anh Quynh , 2013> */ #include #include "utils.h" // check to see if a string exists in a list of string ... bool str_in_list(char **list, char *s) { char **l; for(l = list; *l; l++) if (!strcasecmp(*l, s)) return true; return false; } // binary searching int insn_find(insn_map *m, unsigned int max, unsigned int id) { unsigned int i, begin, end; begin = 0; end = max; while(begin <= end) { i = (begin + end) / 2; if (id == m[i].id) return i; else if (id < m[i].id) end = i - 1; else begin = i + 1; } // found nothing return -1; } int name2id(name_map* map, int max, char *name) { int i; for (i = 0; i < max; i++) { if (!strcasecmp(map[i].name, name)) { return map[i].id; } } // nothing match return -1; } unsigned int insn_reverse_id(insn_map *insns, unsigned int max, unsigned int id) { unsigned int i; for (i = 0; i < max; i++) { if (id == insns[i].mapid) return insns[i].id; } // found nothing return 0; } // count number of positive members in a list. // NOTE: list must be guaranteed to end in 0 unsigned int count_positive(unsigned int *list) { unsigned int c; for (c = 0; list[c] > 0; c++); return c; }