RISCV内联汇编编译



要开始优化我的代码,我必须首先将汇编代码添加到我的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 =源寄存器).

相关内容

  • 没有找到相关文章

最新更新