aboutsummaryrefslogtreecommitdiff
path: root/riscv/disasm.h
diff options
context:
space:
mode:
Diffstat (limited to 'riscv/disasm.h')
-rw-r--r--riscv/disasm.h12
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