一、队伍介绍
队伍名称:东莞庄路三缺二 队伍编号:CICC1399。 大家好,本篇是我们队伍的第一篇分享,主要介绍一下在内联汇编中采用汇编指示符实现自定义指令的方法。水平有限,如有错误,欢迎大家批评指正。
二、具体实现
- 1、采用.word .half .dword等汇编指示符直接插入自定义指令,这种方法需要自己指定寄存器。其中.word为插入一个字的数据即32位,.half为插入半字即16位,.dword为插入双字即64位。以下为演示过程:
- * 在main.c中编写如下代码
- * 使用
riscv-nuclei-elf-gcc main.c
命令编译main.c。 生成默认名a.out可执行文件 - * 使用
riscv-nuclei-elf-objdump -d a.out > main.dump
命令查看反汇编代码,结果如下所示 - 如图所示,在指定位置插入了自定义的指令数据。
- 2、采用.insn汇编指示符实现risc-v自定义指令。这种方式可以指定工具来选择寄存器,也可以自己选定寄存器。指令格式如下(引自gnu 汇编器手册):
- 演示案例可以查看芯来官方案例,这里就不重复了。符号的具体含义可以查看gnu相关手册。
三、总结
以上方案实现了在软件层面上添加自定义指令。但若要使得自定义的指令能够被执行,还需要相应的硬件支持。
-