1

我正在学习 PPC 组装,但很难理解以下关于子例程调用的内容:

哪些寄存器可用于将参数传递给子例程?我认为是R3到R12?当寄存器用完时如何传递参数?我可以看看这个的代码示例。

传回返回值时,只能使用 R3 吗?据我了解,您只能使用此寄存器返回单个值。如果您需要返回更多值,那么您返回指向这些值的指针?我也可以看到一个代码示例吗?

4

1 回答 1

2

如果你用汇编语言编写,你可以做任何你想做的事情。只有当您想与某些外部代码(可能是库,可能是系统调用)交互时,您才需要遵守调用约定。有些架构有多个不同的 ABI,所以你必须小心。

如果我没记错的话,几乎每个人都对 32 位 PowerPC 使用相同的调用约定,所以这个 Apple 参考应该包含您需要知道的所有内容。正如您所提到的,参数通常在 R3-R10 中传递,返回值放在 R3 中。 本教程似乎表明相同。

于 2013-06-25T23:07:09.597 回答