ARM函数调用时参数传递规则

以前在学习如何在C语言中嵌入汇编时有了解到C语言以前的参数调用是使用寄存器web

R0传递第一个参数,ide

R1传递到第二个..函数

一直到R3传递第四个参数.学习

可是 实际上有时可能传递的参数很是多,超过8个,或是参数中有浮点数之类,参数也会超过4个寄存器,对于超出的部份并不使用R4,而是使用堆栈的方式.ui

对于ARM体系来讲,不一样语言撰写的函数之间相互调用(mix calls)遵循的是 ATPCS(ARM-Thumb Procedure Call Standard),ATPCS主要是定义了函数呼叫时参数的传递规则以及如何从函数返回,关于ATPCS的详细内容能够查看ADS1.2 Online Books ——Developer Guide的2.1节。这篇文档要讲的是 汇编代码中对C函数调用时如何进行参数的传递以及如何从C函数正确返回spa

不一样于x86的参数传递规则,ATPCS建议函数的形参不超过4个,若是形参个数少于或等于4,则形参由R0,R1,R2,R3四个寄存器进行传递;若形参个数大于4,大于4的部分必须经过堆栈进行传递。orm

相关文章
相关标签/搜索