我对RISC-V ABI寄存器名称感到困惑.例如,"RISC-V指令集手册,第I卷:用户级ISA,版本2.0"(第85页)中的表18.2指定堆栈指针sp是寄存器x14.但是,指令
addi sp,zero,0
Run Code Online (Sandbox Code Playgroud)
由riscv64-unknown-elf-as编译为0x00000113(-m32没有区别).二进制:
000000000000 00000 000 00010 0010011
^imm ^rs1 ^f3 ^rd ^opcode
Run Code Online (Sandbox Code Playgroud)
所以这里sp似乎是x2.然后我google了一下,找到了RISC-V Linux用户手册.该文件表明了这sp一点x30.
那是什么?是否有不同的ABI?我可以使用命令行选项设置ABI riscv64-unknown-elf-*吗?某处有一张综合表吗?