【发布时间】:2021-08-09 16:55:08
【问题描述】:
这是关于 ARM 64 位的 Unix/Linux ABI。
如果一个函数正在使用寄存器 x0-x7,因为它已收到 8 个参数,然后它调用另一个也计划使用的函数,比如说 x6-x7,是期望调用者保存这些参数还是被调用者将救他们?
Unix aarch64 ABI 对此并不清楚。
【问题讨论】:
-
每个函数都可以覆盖 x0 到 x7,故事结束。因此,如果您的调用者在它关心的任何寄存器中有数据,它需要在调用任何其他函数之前保存它们。但我不是 100% 确定这是否是您所要求的。 “计划使用 x6-x7”令人困惑,因为您的调用者无法知道被调用者实际计划使用什么;它只知道 ABI 允许它使用什么。
-
是的,它澄清了它。
标签: linux assembly arm64 calling-convention abi