【发布时间】:2013-06-25 22:51:48
【问题描述】:
我正在学习 PPC 组装,但很难理解以下关于子例程调用的内容:
哪些寄存器可用于将参数传递给子例程?我认为是R3到R12? 当寄存器用完时如何传递参数?我可以看看这个的代码示例吗?
传回返回值时,只能使用R3吗?据我了解,您只能使用此寄存器返回单个值。如果您需要返回更多值,那么您返回指向这些值的指针?我也可以看到一个代码示例吗?
【问题讨论】:
标签: assembly subroutine powerpc
我正在学习 PPC 组装,但很难理解以下关于子例程调用的内容:
哪些寄存器可用于将参数传递给子例程?我认为是R3到R12? 当寄存器用完时如何传递参数?我可以看看这个的代码示例吗?
传回返回值时,只能使用R3吗?据我了解,您只能使用此寄存器返回单个值。如果您需要返回更多值,那么您返回指向这些值的指针?我也可以看到一个代码示例吗?
【问题讨论】:
标签: assembly subroutine powerpc
如果你用汇编语言编写,你可以做任何你想做的事。只有当您想与某些外部代码(可能是库,可能是系统调用)交互时,您才需要遵守调用约定。有些架构有多个不同的 ABI,所以你必须小心。
如果我没记错的话,几乎每个人都对 32 位 PowerPC 使用相同的调用约定,所以this Apple reference 应该有你需要知道的一切。正如您所提到的,参数通常在 R3-R10 中传递,返回值放在 R3 中。 This tutorial 似乎表示相同。
【讨论】: