将C语言翻译成可执行的机器语言的重要步骤包括编译过程,汇编过程,链接过程。
函数调用约定过程分为六个阶段:
1) 将参数存放到函数可访问的位置;
2) 跳转到函数入口(使用RV32I的jal指令);
3) 获取函数所需的局部存储资源,按需保存寄存器;
4) 执行函数功能;
5) 将返回值存放到调用者可访问的位置,恢复寄存器,释放局部存储资源;
6) 由于程序可从多处调用函数,故需将控制权返回到调用点(使用ret指令)。
汇编器支持很多伪指令:
链接器的作用是将多个汇编器输出的扩展名为o的文件和已有的机器码“拼接”为一个可执行的目标文件。
RISC-V除了基本指令集外,还支持多种扩展指令集,例如RV32M(乘法和除法指令),RV32F和RV32D(单精度和双精度浮点数),RV32A(原子指令),RV32C(压缩指令),RV32V(向量),RV64(64位地址指令),RV32/64特权架构;未来还有多种可选的扩展。
更多回帖