本帖最后由 我爱下载 于 2023-4-14 14:33 编辑
9. 请阐释RISC-V体系结构下的函数调用规范。
函数调用规范用来描述父/子函数是如何编译和链接的,特别是父函数和子函数之间的调用关系的约定。对于RISC-V的函数调用规范:
* 函数的前8个参数使用a0~a7寄存器传递;
* 如果参数大于8个,后面的参数使用栈传递;
* 如果传递参数小于64位,参数需要符号扩展到64位。如果传递的参数大于64位,需要占用两个寄存器。
* 函数返回值保存在a0和a1中
* 函数的返回地址保存在ra中
* 子函数使用s0~s11寄存器时,要保存寄存器值到栈中;
* 栈向下增长(低地址方向),sp指针16字节对齐
* 如果GCC使用-fno-omit-frame-pointer编译选项,编译器使用s0作为栈帧指针(fp)
10. 在函数调用过程中,如果函数传递的参数大于8,如何传递参数?
采用堆栈传递参数
11. 在RISC-V汇编中,“.align 3”表示什么意思?
要求采用8字节对齐。
12. 这条伪指令是什么意思(.section ".my.text","awx" )?
开始一个段.my.text,以下的代码存储在这个段中,该段具有可分配,可写和可执行的属性。
|