在Raspberry Pi的ARM程序集中的寄存器r0-r4中是否存在严格的函数参数存储序列?

时间:2017-03-02 18:12:04

标签: assembly arm

在Raspberry Pi上的ARM汇编代码中,我们是否可以使用寄存器r1(而不是寄存器r0)来接收第一个函数参数,同时保留寄存器r0仅用于函数的返回值?或者必须将前4个函数参数依次严格地存储在寄存器r0,r1,r2和r3中?

1 个答案:

答案 0 :(得分:0)

取决于您的代码是否必须从其他代码使用/调用。关于如何使用寄存器,如何在调用之间传递参数等有一些“规则”。这些规则称为ABI(应用程序二进制接口),ARM可以在这里找到:http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html

允许将用“C”编写的代码调用(例如)汇编程序或其他语言编写的代码,这是共享库背后的魔力的一部分。

如果您将Raspberry编程为硬件的硬件,也就是说,您没有使用与操作系统或其他应用程序连接的SW,您可以在途中编写代码,但一般情况下您应该遵循在汇编程序中编程时的这些规则。即使您不打算使用其他SW组件或操作系统。这样可以简化端口代码。