@@ -97,6 +97,9 @@ static const insn_map insns[] = {
9797#include "RISCVMappingInsn.inc"
9898};
9999
100+ const insn_map * RISCV_insns = insns ;
101+ const unsigned int RISCV_insn_count = ARR_SIZE (insns );
102+
100103#ifndef CAPSTONE_DIET
101104
102105static const map_insn_ops insn_operands [] = {
@@ -132,30 +135,29 @@ void RISCV_add_cs_detail(MCInst *MI, unsigned OpNum)
132135// given internal insn id, return public instruction info
133136void RISCV_get_insn_id (cs_struct * h , cs_insn * insn , unsigned int id )
134137{
135- unsigned int i ;
138+ insn_map const * insn_map = NULL ;
136139
137- i = insn_find (insns , ARR_SIZE (insns ), id , & h -> insn_cache );
138- if (i != 0 ) {
139- insn -> id = insns [i ].mapid ;
140+ if ((insn_map = lookup_insn_map (h , id ))) {
141+ insn -> id = insn_map -> mapid ;
140142
141143 if (h -> detail_opt ) {
142144#ifndef CAPSTONE_DIET
143- memcpy (insn -> detail -> regs_read , insns [ i ]. regs_use ,
144- sizeof (insns [ i ]. regs_use ));
145+ memcpy (insn -> detail -> regs_read , insn_map -> regs_use ,
146+ sizeof (insn_map -> regs_use ));
145147 insn -> detail -> regs_read_count =
146- (uint8_t )count_positive (insns [ i ]. regs_use );
148+ (uint8_t )count_positive (insn_map -> regs_use );
147149
148- memcpy (insn -> detail -> regs_write , insns [ i ]. regs_mod ,
149- sizeof (insns [ i ]. regs_mod ));
150+ memcpy (insn -> detail -> regs_write , insn_map -> regs_mod ,
151+ sizeof (insn_map -> regs_mod ));
150152 insn -> detail -> regs_write_count =
151- (uint8_t )count_positive (insns [ i ]. regs_mod );
153+ (uint8_t )count_positive (insn_map -> regs_mod );
152154
153- memcpy (insn -> detail -> groups , insns [ i ]. groups ,
154- sizeof (insns [ i ]. groups ));
155+ memcpy (insn -> detail -> groups , insn_map -> groups ,
156+ sizeof (insn_map -> groups ));
155157 insn -> detail -> groups_count =
156- (uint8_t )count_positive8 (insns [ i ]. groups );
158+ (uint8_t )count_positive8 (insn_map -> groups );
157159
158- if (insns [ i ]. branch || insns [ i ]. indirect_branch ) {
160+ if (insn_map -> branch || insn_map -> indirect_branch ) {
159161 // this insn also belongs to JUMP group. add JUMP group
160162 insn -> detail
161163 -> groups [insn -> detail -> groups_count ] =
0 commit comments