Browse Source

Decouple spike-dasm program from simulator code

pull/387/head
Andrew Waterman 6 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.parse(argv);
processor_t p(isa, DEFAULT_PRIV, DEFAULT_VARCH, 0, 0);
if (extension)
p.register_extension(extension());
std::string lowercase;
for (const char *p = isa; *p; p++)
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))
{
@ -52,7 +69,7 @@ int main(int argc, char** argv)
if (nbits < 64)
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);
pos = start + dis.length();
}

Loading…
Cancel
Save