要开始优化我的代码,我必须首先将汇编代码添加到我的C中,这是与gcc riscv工具链交叉编译的,首先我试图实现简单的riscv内联,如下所示
int src = 1;
int dst;
asm ("mov %1, %0nt"
"add $1, %0nt"
: "=r" (dst)
: "r" (src));
但是交叉编译为
时出错错误:不可识别的操作码' mov a1,a1'
错误:非法操作数add $1,a1
我应该为内联汇编实现添加任何特定的标志吗?任何帮助都太好了!
语法不正确,建议您阅读:
- Riscv规范在官方网站(Riscv规范,这些基本上是两个手册与所有的信息有关的指令类型,寄存器,…关于riscv硬件实现的所有内容)
- https://riscv-programming.org/book.html(这是一本我发现的关于riscv汇编编程的书)
- 计算机体系结构讲座5:更多的RISC-V, RISC-V函数。pdf(非常好的幻灯片,了解RISC-V汇编)。这里我还有一个概念页,是我做的,用来向我的学生解释一些riscv汇编:我关于riscv汇编的概念页。都是用意大利语写的,但是有很多很好的例子。这一切都在rars模拟器上工作)并在rars模拟器上尝试riscv汇编,以便更好地了解它的工作原理:
如果你想在riscv程序集中使用move操作符,你需要使用mv rd, rs(rd =目的寄存器,rs =源寄存器).