|
0
|
| HaggarTheHorrible · 技术社区 · 15 年前 |
|
|
1
4
通常,如果传递给函数的参数超过4个,则多余的参数将传递给堆栈。
“ARM体系结构的过程调用标准”的第5章(基本过程调用标准)应该有确切的细节。表面上看它相当复杂(因为有很多关于对齐方式、参数大小等的细节),但我认为出于您的目的,它归结为函数get的第5个参数被推到了堆栈上。 当然,正如您在问题中所建议的,您可以通过将4个指针打包到一个结构中并传递一个指向该结构的指针来避免所有这些—在您的汇编例程中,您只需将该结构指针加载到一个寄存器中,然后使用它来依次加载真正需要的指针。 我认为手臂组件可能看起来像:
|
|
|
2
3
第五个和更多的参数(假设int大小的参数)在堆栈上传递。即,第五个参数可访问为[SP],第六个参数可访问为[SP,#4],依此类推。阅读
Procedure Call Standard for the ARM Architecture
详细的解释。
|