我正在寻求有关我尝试添加的扩展的帮助 riscv。
我的工作基线是riscv-toolsrepo的克隆,包含常用工具,其中包括:
注意:我克隆的最后一次提交是c6d58cecb3862deb742e1a5cc9d1c682f2c50ba9(2018-04-24)。
我的工作基于一个riscv32-ima核心。我想向该处理器添加一条指令,该指令ISA将激活我的处理器中的特定组件。
从 proc 本身的行为来看,我没有问题:我修改了尖峰并且我的指令(以及我添加到处理器的组件)工作得很好。
在汇编程序中,指令如下所示:
addi a0, a0, 0
... // other code
setupcomp // activate my component ...
... // other code
Run Code Online (Sandbox Code Playgroud)
看到这条指令没有任何操作数。
我躲了一会儿,发现这个教程有点旧。
所以我:
riscv-tools/riscv-opcodes/将opcode及其掩码添加到riscv-tools/riscv-opcodes/opcodes. 我的看起来像这样:
setupcomp 31..28=ignore 27..20=ignore 19..15=ignore 14..12=0 11..7=ignore 6..2=0x1a 1..0=3
Run Code Online (Sandbox Code Playgroud)从那里,我重建必要的.h文件:
make install
Run Code Online (Sandbox Code Playgroud)现在,我将必要的添加stucts到riscv-tools/riscv-gnu-toolchain/riscv-binutils-gdb/include/opcode/riscv-opc.h,并且我还正式声明了指令:
#define MATCH_SETUPCOMP 0x6b
#define …Run Code Online (Sandbox Code Playgroud)