我正在学习PPC Assembly,但我很难理解以下关于子例程调用的内容:
哪些寄存器可用于将参数传递给子例程?我想是R3 to R12吧?当寄存器耗尽时,如何传递参数?我可以看一下这个的代码示例吗?
在回传返回值时,只能使用R3吗?据我所知,您只能使用此寄存器返回单个值。如果你需要返回更多的值,那么返回一个指向这些值的指针?我也可以看一下这个的代码示例吗?
发布于 2013-06-26 07:07:10
如果你是用汇编语言写的,你可以做任何你想做的事情。只有当您想要与一些外部代码(可能是库,可能是系统调用)交互时,才需要遵守调用约定。有些架构有多个不同的ABI,因此您必须小心。
如果我没记错的话,几乎每个人都对32位PowerPC使用相同的调用约定,所以this Apple reference应该有您需要知道的一切。正如您所提到的,参数通常在R3-R10中传递,返回值放在R3中。This tutorial似乎也表明了这一点。
https://stackoverflow.com/questions/17308880
复制相似问题