Browse Source

Decouple spike-dasm program from simulator code

pull/387/head
Andrew Waterman 7 years ago
parent
commit
bb1cd8f9e3
  1. 25
      spike_main/spike-dasm.cc

25
spike_main/spike-dasm.cc

@ -25,9 +25,26 @@ int main(int argc, char** argv)
parser.option(0, "isa", 1, [&](const char* s){isa = s;}); parser.option(0, "isa", 1, [&](const char* s){isa = s;});
parser.parse(argv); parser.parse(argv);
processor_t p(isa, DEFAULT_PRIV, DEFAULT_VARCH, 0, 0); std::string lowercase;
if (extension) for (const char *p = isa; *p; p++)
p.register_extension(extension()); lowercase += std::tolower(*p);
int xlen;
if (lowercase.compare(0, 4, "rv32") == 0) {
xlen = 32;
} else if (lowercase.compare(0, 4, "rv64") == 0) {
xlen = 64;
} else {
fprintf(stderr, "bad ISA string: %s\n", isa);
return 1;
}
disassembler_t* disassembler = new disassembler_t(xlen);
if (extension) {
for (auto disasm_insn : extension()->get_disasms()) {
disassembler->add_insn(disasm_insn);
}
}
while (getline(cin, s)) while (getline(cin, s))
{ {
@ -52,7 +69,7 @@ int main(int argc, char** argv)
if (nbits < 64) if (nbits < 64)
bits = bits << (64 - nbits) >> (64 - nbits); bits = bits << (64 - nbits) >> (64 - nbits);
string dis = p.get_disassembler()->disassemble(bits); string dis = disassembler->disassemble(bits);
s = s.substr(0, start) + dis + s.substr(endp - &s[0] + 1); s = s.substr(0, start) + dis + s.substr(endp - &s[0] + 1);
pos = start + dis.length(); pos = start + dis.length();
} }

Loading…
Cancel
Save