Cli*_*ord 11
的ARM EABI定义除其他事项外的C/C++代码调用约定要求的前四个参数被传递在通用寄存器R0至R3.
其他参数在调用堆栈上传递,因此涉及RAM访问以加载和检索它们.除了RAM访问通常比寄存器访问更慢之外,RAM的传输在任何情况下都需要更多指令.
这当然适用于长度为32位的参数.双精度浮点类型和通过副本传递的聚合类型(结构)不能在单个寄存器中传递.
最后它可能是学术性的; 如果一个函数需要参数,它需要它们!传递大量数据的替代方法具有类似的开销,使得它们很少或没有更好.例如,您可以将单个指针或引用传递给包含数据的结构或对象,但该数据仍在RAM中,并且仍然存在访问开销.
| 归档时间: |
|
| 查看次数: |
1730 次 |
| 最近记录: |