小编Lio*_*rel的帖子

向 RISCV-32ima 添加新指令:“错误的 RISCV 操作码”

我正在寻求有关我尝试添加的扩展的帮助 riscv

全局设置

我的工作基线是riscv-toolsrepo的克隆,包含常用工具,其中包括:

  • riscv-fesvr
  • riscv-gnu-工具链
  • riscv-isa-sim
  • riscv 操作码
  • RISCV-PK

注意:我克隆的最后一次提交是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)

看到这条指令没有任何操作数。

我所做的

我躲了一会儿,发现这个教程有点旧

所以我:

  1. riscv-tools/riscv-opcodes/
  2. 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)
  3. 从那里,我重建必要的.h文件:

    make install
    
    Run Code Online (Sandbox Code Playgroud)
  4. 现在,我将必要的添加stuctsriscv-tools/riscv-gnu-toolchain/riscv-binutils-gdb/include/opcode/riscv-opc.h,并且我还正式声明了指令:

    #define MATCH_SETUPCOMP 0x6b
    #define …
    Run Code Online (Sandbox Code Playgroud)

binutils riscv

5
推荐指数
1
解决办法
1200
查看次数

标签 统计

binutils ×1

riscv ×1