Browse Source

Correct c.li and c.lui disassembly (#118)

I currently get this disassembly

    00004881 jr      a7

but if I understand that's incorrect and I want

    00004881 li      a7, 0

If I'm reading the ISA manual correctly, the disassembler was just wrong
here.
pull/119/head
Palmer Dabbelt 9 years ago
committed by Andrew Waterman
parent
commit
7f746b7c2f
  1. 4
      spike_main/disasm.cc

4
spike_main/disasm.cc

@ -500,8 +500,8 @@ disassembler_t::disassembler_t(int xlen)
DISASM_INSN("ebreak", c_add, mask_rd | mask_rvc_rs2, {}); DISASM_INSN("ebreak", c_add, mask_rd | mask_rvc_rs2, {});
add_insn(new disasm_insn_t("ret", match_c_li | match_rd_ra, mask_c_li | mask_rd | mask_rvc_imm, {})); add_insn(new disasm_insn_t("ret", match_c_li | match_rd_ra, mask_c_li | mask_rd | mask_rvc_imm, {}));
DISASM_INSN("jr", c_li, mask_rvc_imm, {&rvc_rs1}); DISASM_INSN("jr", c_jr, mask_rvc_imm, {&rvc_rs1});
DISASM_INSN("jalr", c_lui, mask_rvc_imm, {&rvc_rs1}); DISASM_INSN("jalr", c_jalr, mask_rvc_imm, {&rvc_rs1});
DISASM_INSN("nop", c_addi, mask_rd | mask_rvc_imm, {}); DISASM_INSN("nop", c_addi, mask_rd | mask_rvc_imm, {});
DISASM_INSN("addi", c_addi16sp, mask_rd, {&rvc_sp, &rvc_sp, &rvc_addi16sp_imm}); DISASM_INSN("addi", c_addi16sp, mask_rd, {&rvc_sp, &rvc_sp, &rvc_addi16sp_imm});
DISASM_INSN("addi", c_addi4spn, 0, {&rvc_rs1s, &rvc_sp, &rvc_addi4spn_imm}); DISASM_INSN("addi", c_addi4spn, 0, {&rvc_rs1s, &rvc_sp, &rvc_addi4spn_imm});

Loading…
Cancel
Save