RISC-V 函数调用约定

RISC-V 函数调用约定

💡 原文中文,约2800字,阅读约需7分钟。
📝

内容提要

RISC-V 的调用约定规定了函数调用时寄存器的管理。调用者负责保存 caller-saved 寄存器的值,而被调用者负责维护 callee-saved 寄存器。在调用前,调用者需保存寄存器值,调用后恢复;被调用者在执行前后也需保持寄存器的一致性。

🎯

关键要点

  • RISC-V 的调用约定规定了函数调用时寄存器的管理。
  • 调用者负责保存 caller-saved 寄存器的值,被调用者负责维护 callee-saved 寄存器。
  • 调用者在调用前需保存寄存器值,调用后恢复。
  • 被调用者在执行前后需保持寄存器的一致性。
  • 调用者和被调用者的身份由其行为决定。
  • callee-saved 寄存器包括 s0 - s11 和 sp,caller-saved 寄存器包括 a0 - a7 和 t0 - t6。
  • 调用者在调用函数前后必须手动维护 caller-saved 寄存器的一致性。
  • 被调用者在函数操作前后必须手动维护 callee-saved 寄存器的一致性。
  • 在调用函数后,caller-saved 寄存器的值可能会变为垃圾值,调用者需提前保存。
  • RISC-V 的调用约定确保了寄存器的内容在函数调用前后得到正确管理。
➡️

继续阅读