在以下 RISC-V 汇编代码中:
...
#Using some temporary (t) registers
...
addi a7,zero,1 #Printint system call code
addi a0,zero,100
ecall
...
在使用之前是否应该将任何临时 (t) 寄存器保存到堆栈中ecall
?使用ecall
时,会发生异常,内核模式开启,代码从异常处理程序中执行。一些信息在异常发生时会保存下来,比如EPC
and CAUSE
,但是临时寄存器呢?出于安全原因,环境调用被认为不像过程,但它们看起来像。在这种情况下,过程调用约定是否仍然适用?