diff options
author | Your Name <waterman@eecs.berkeley.edu> | 2011-11-11 18:03:08 -0800 |
---|---|---|
committer | Your Name <waterman@eecs.berkeley.edu> | 2011-11-11 18:03:08 -0800 |
commit | e7fb0404b87efaf7610a9661d308cdc5a8db9e14 (patch) | |
tree | 9bc4dffb2717eb0741159925491160e0193cae95 /riscv/disasm.h | |
parent | 504a07f261f25eb884c91b7008f85d669b025cb8 (diff) | |
download | spike-e7fb0404b87efaf7610a9661d308cdc5a8db9e14.zip spike-e7fb0404b87efaf7610a9661d308cdc5a8db9e14.tar.gz spike-e7fb0404b87efaf7610a9661d308cdc5a8db9e14.tar.bz2 |
Remove dependence on binutils
We now have our own disassembler.
Diffstat (limited to 'riscv/disasm.h')
-rw-r--r-- | riscv/disasm.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/riscv/disasm.h b/riscv/disasm.h new file mode 100644 index 0000000..0b55948 --- /dev/null +++ b/riscv/disasm.h @@ -0,0 +1,23 @@ +#ifndef _RISCV_DISASM_H +#define _RISCV_DISASM_H + +#include "decode.h" +#include <string> +#include <vector> + +struct disasm_insn_t; + +class disassembler +{ + public: + disassembler(); + ~disassembler(); + std::string disassemble(insn_t insn); + private: + static const int HASH_SIZE = 256; + std::vector<const disasm_insn_t*> chain[HASH_SIZE+1]; + void add_insn(disasm_insn_t* insn); + const disasm_insn_t* lookup(insn_t insn); +}; + +#endif |