4.1 ISA & 汇编语言
RISC-V:精简指令集
x86:复杂指令集
4.2 调用约定
规定子过程如何获取参数以及如何返回。一般规定:
- 参数、返回值、返回地址
注意:这里RISC-V有相应的整型指令集和浮点型指令集(参考课程视频),可以自行选择需要的部分。寄存器:a0-a7为int参数,f0-f7是float参数 - 将子过程的准备和恢复划分到调用者(caller)和被调用者(callee)
- 没有传到寄存器的参数将以栈的方式传入
- sp栈指针指向第一个没有传入到寄存器的参数
- caller保存的寄存器要在过程调用后恢复该值,调用方需要将这些寄存器压入堆栈或保存到其他位置。callee保存的寄存器会被保存,即A调用B,所有A保存的寄存器在B被调用后可被B重写覆盖。
4.3 Stack
- 栈:高地址到低地址,每个box叫栈帧(stack frame)
- 栈帧最高处是
return address
- sp:stack point,指向栈