diff options
Diffstat (limited to 'riscv/disasm.h')
-rw-r--r-- | riscv/disasm.h | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/riscv/disasm.h b/riscv/disasm.h index 8e60031..f57fd49 100644 --- a/riscv/disasm.h +++ b/riscv/disasm.h @@ -88,8 +88,18 @@ class disassembler_t void add_insn(disasm_insn_t* insn); private: - static const int HASH_SIZE = 256; + static const int HASH_SIZE = 255; std::vector<const disasm_insn_t*> chain[HASH_SIZE+1]; + + const disasm_insn_t* probe_once(insn_t insn, size_t idx) const; + + static const unsigned int MASK1 = 0x7f; + static const unsigned int MASK2 = 0xe003; + + static const unsigned int hash(insn_bits_t insn, unsigned int mask) + { + return (insn & mask) % HASH_SIZE; + } }; #endif |