RISC-V MCU中文社区

【分享】 采用汇编指示符来使用自定义指令

发表于 全国大学生集成电路创新创业大赛 2021-07-22 12:45:01
0
4501
2

一、队伍介绍

队伍名称:东莞庄路三缺二 队伍编号:CICC1399。 大家好,本篇是我们队伍的第一篇分享,主要介绍一下在内联汇编中采用汇编指示符实现自定义指令的方法。水平有限,如有错误,欢迎大家批评指正。

二、具体实现

  1. 1、采用.word .half .dword等汇编指示符直接插入自定义指令,这种方法需要自己指定寄存器。其中.word为插入一个字的数据即32位,.half为插入半字即16位,.dword为插入双字即64位。以下为演示过程:
  2. * 在main.c中编写如下代码
  3. * 使用riscv-nuclei-elf-gcc main.c命令编译main.c。 生成默认名a.out可执行文件
  4. * 使用riscv-nuclei-elf-objdump -d a.out > main.dump命令查看反汇编代码,结果如下所示
  5. 如图所示,在指定位置插入了自定义的指令数据。
  6. 2、采用.insn汇编指示符实现risc-v自定义指令。这种方式可以指定工具来选择寄存器,也可以自己选定寄存器。指令格式如下(引自gnu 汇编器手册):


  7. 演示案例可以查看芯来官方案例,这里就不重复了。符号的具体含义可以查看gnu相关手册。
  8. 三、总结

    以上方案实现了在软件层面上添加自定义指令。但若要使得自定义的指令能够被执行,还需要相应的硬件支持。

喜欢2
用户评论

未通过实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板