Add an api to get the name for a CSR.
[riscv-isa-sim.git] / riscv / disasm.h
index 58a518a49d8c609715285dd967b498a987be21e1..94e007a12d32ff254a079313f9b798594cd2e0f2 100644 (file)
@@ -8,19 +8,9 @@
 #include <sstream>
 #include <vector>
 
-static const char* xpr_name[] = {
-  "zero", "ra", "s0", "s1",  "s2",  "s3",  "s4",  "s5",
-  "s6",   "s7", "s8", "s9", "s10", "s11",  "sp",  "tp",
-  "v0",   "v1", "a0", "a1",  "a2",  "a3",  "a4",  "a5",
-  "a6",   "a7", "t0", "t1",  "t2",  "t3",  "t4",  "gp"
-};
-
-static const char* fpr_name[] = {
-  "fs0", "fs1",  "fs2",  "fs3",  "fs4",  "fs5",  "fs6",  "fs7",
-  "fs8", "fs9", "fs10", "fs11", "fs12", "fs13", "fs14", "fs15",
-  "fv0", "fv1", "fa0",   "fa1",  "fa2",  "fa3",  "fa4",  "fa5",
-  "fa6", "fa7", "ft0",   "ft1",  "ft2",  "ft3",  "ft4",  "ft5"
-};
+extern const char* xpr_name[NXPR];
+extern const char* fpr_name[NFPR];
+extern const char* csr_name(int which);
 
 class arg_t
 {
@@ -71,14 +61,14 @@ class disasm_insn_t
 class disassembler_t
 {
  public:
-  disassembler_t();
+  disassembler_t(int xlen);
   ~disassembler_t();
-  std::string disassemble(insn_t insn);
+  std::string disassemble(insn_t insn) const;
   void add_insn(disasm_insn_t* insn);
  private:
   static const int HASH_SIZE = 256;
   std::vector<const disasm_insn_t*> chain[HASH_SIZE+1];
-  const disasm_insn_t* lookup(insn_t insn);
+  const disasm_insn_t* lookup(insn_t insn) const;
 };
 
 #endif