xv6 lec5 Calling conventions and stack frames RISC-V
5.1 C程序到汇编程序的转换
- RICS-V处理器就是可以理解RISC-V指令集的处理器,任何一个处理器都有一个关联的ISA(Instruction Sets Architecture)
5.2 RISC-V vs x86
- RISC-V是精简指令集,而x86是(Reduced Instruction Set Computer),而x86是复杂指令集CISC:区别在于
- RISC指令数更少
- RISC指令更简单,一般不会一条指令做复杂的操作
- RISC开源
- 为什么现在还大部分在使用x86,虽然x86只是性能高,但是复杂并且不安全?其实intel实现了安全相关的enclave,intel还实现了一些特定的高效运算,当让把软件全部转到risc-v需要时间
5.3 gdb和汇编代码执行
5.4 RISC-V寄存器
- 汇编语句是在寄存器上执行,而不是在内存上执行,也就是说当我们在做add,sub时,我们是对寄存器操作,也就通过load将数据放到寄存器中
- 为什么s1与其他s寄存器是分开的?
- caller saved寄存器是指调用者(caller)需要保存的寄存器,因为其会被调用的函数修改
stack pointer
与frame pointer
会在函数调用开始时被修改,调用完会被改回来,所以是callee
5.5 Stack
- 这里没有修改sp等操作的prologue与修改回sp等操作的epllogue的函数是leaf function
- 非leaf 函数就由prologue与epllogue
- 非leaf 函数的一开始减少16是用来存放ra(ra就是caller function)
5.6 Struct