AArch64 学习 (二) 函数调用 (Function Call Convention)
本系列的第一篇 中介绍了 AArch64 的基础指令、进程内存布局以及基础栈操作 等. 本文该系列的第二篇, 主要聊聊函数调用, 涉及到的就是 Function Call Convention. 初衷还是尽可能 “浅入深出” 地 got 到语言背后的本质, 这不是一个手册, 所以不是完备的.
1. 我们在聊函数调用的时候在聊什么?
至少我们应该把函数调用的几个问题搞清楚:
- 函数在汇编层是怎么调用的, 本质是什么?
- 函数的参数怎么传?
- 返回值写到哪里? 怎么传给 caller?
- 调用完之后, 怎么返回到原来的位置?
Function Call Convention 其实就是回答这些问题的, 接下里我们一一找到答案.