【文件属性】:
文件名称:栈演进图.vsdx
文件大小:32KB
文件格式:VSDX
更新时间:2020-12-08 11:53:06
栈 堆栈
函数栈帧分析:
① 注意lr和fp的入栈位置
lr是R14,fp是R11,所以入栈后lr在高地址,fp在低地址
② 此次main函数栈中保存了lr
这是因为main函数还要调用func1函数,所以将lr寄存器压栈。即非叶子函数在建立函数栈时,需要将lr入栈保存。
③ 超出r0 ~ r3的参数通过主调函数栈传递
示例中的5和6就通过main函数栈传递,而且func1在使用这2个参数时也是从main函数栈中取出,并没有复制一份到自己的栈中。
④ 通过r0 ~ r3传递的参数会被压入被调函数栈
这也就是AAPCS中被调函数无需恢复r0 ~ r3的原因