【发布时间】:2026-01-26 11:45:02
【问题描述】:
在以下 RISC-V 汇编代码中:
...
#Using some temporary (t) registers
...
addi a7,zero,1 #Printint system call code
addi a0,zero,100
ecall
...
在使用ecall之前是否应该将任何临时(t)寄存器保存到堆栈中?当使用ecall 时,会发生异常,内核模式处于打开状态并从异常处理程序中执行代码。发生异常时会保存一些信息,例如 EPC 和 CAUSE ,但是临时寄存器呢?出于安全原因,环境调用被认为不像过程,但它们看起来像。在这种情况下,过程调用约定是否仍然适用?
【问题讨论】:
标签: system-calls calling-convention riscv rars-simulator