1
我正在学习PPC组件,但我很难理解以下关于子例程调用的问题:PowerPC程序集:如何传递和返回多个参数?
什么寄存器可用于将参数传递给子例程?我认为这是R3到R12? 当你用尽寄存器时,你如何传递参数?我可以看看这个代码示例。
当传回返回值时,您是否只能使用R3?根据我的理解,您只能使用此寄存器来返回单个值。如果你需要返回更多的值,那么你返回一个指向这些值的指针?我是否也可以看到一个代码示例。
我正在学习PPC组件,但我很难理解以下关于子例程调用的问题:PowerPC程序集:如何传递和返回多个参数?
什么寄存器可用于将参数传递给子例程?我认为这是R3到R12? 当你用尽寄存器时,你如何传递参数?我可以看看这个代码示例。
当传回返回值时,您是否只能使用R3?根据我的理解,您只能使用此寄存器来返回单个值。如果你需要返回更多的值,那么你返回一个指向这些值的指针?我是否也可以看到一个代码示例。
如果你用汇编语言编写,你可以做任何你想做的事情。只有当你想与外部代码交互(可能是一个库,也可能是一个系统调用)时,你才需要遵守调用约定。一些体系结构有多个不同的ABI,所以你必须小心。
如果我记得没错,几乎每个人都使用相同的32位PowerPC调用约定,所以this Apple reference应该有你需要知道的一切。正如你所提到的,参数通常在R3-R10中传递,返回值放在R3中。 This tutorial似乎表明相同。