rv32emu
                                
                                 rv32emu copied to clipboard
                                
                                    rv32emu copied to clipboard
                            
                            
                            
                        Generate RISC-V instruction decoder from ISA descriptor
There is some relevant documentation included with the current RISC-V instructions decoding implementation. The maintenance and verification, however, are not straightforward. Instead, we may describe how RISC-V instructions are encoded in human readable form; a code generator will then convert this information into C code. See make_decoder.py from arviss and HiSimu for reference.
Expected output:
- Create src/instructions.inwhich contains the following:
# format of a line in this file:
# <instruction name> <args> <opcode>
#
# <opcode> is given by specifying one or more range/value pairs:
# hi..lo=value or bit=value or arg=value (e.g. 6..2=0x45 10=1 rd=0)
#
# <args> is one of rd, rs1, rs2, rs3, imm20, imm12, imm12lo, imm12hi,
# shamtw, shamt, rm
# rv32i
beq     bimm12hi rs1 rs2 bimm12lo 14..12=0 6..2=0x18 1..0=3
bne     bimm12hi rs1 rs2 bimm12lo 14..12=1 6..2=0x18 1..0=3
blt     bimm12hi rs1 rs2 bimm12lo 14..12=4 6..2=0x18 1..0=3
bge     bimm12hi rs1 rs2 bimm12lo 14..12=5 6..2=0x18 1..0=3
bltu    bimm12hi rs1 rs2 bimm12lo 14..12=6 6..2=0x18 1..0=3
bgeu    bimm12hi rs1 rs2 bimm12lo 14..12=7 6..2=0x18 1..0=3
- Prepare scripts/gen-decoder.py(other scripting languages are acceptable.) which can convert from the above into the corresponding C implementation.
- Modify build system and src/decode.cto be aware of the above changes.
- Create an entry in directory docswhich describe the high level idea and the way to describe more extensions.