栈演进图.vsdx
函数栈帧分析: 1 注意lr和fp的入栈位置 lr是R14,fp是R11,所以入栈后lr在高地址,fp在低地址 2 此次main函数栈中保存了lr 这是因为main函数还要调用func1函数,所以将lr寄存器压栈。即非叶子函数在建立函数栈时,需要将lr入栈保存。 3 超出r0 ~ r3的参数通过主调函数栈传递 示例中的5和6就通过main函数栈传递,而且func1在使用这2个参数时也是从main函数栈中取出,并没有复制一份到自己的栈中。 4 通过r0 ~ r3传递的参数会被压入被调函数栈 这也就是AAPCS中被调函数无需恢复r0 ~ r3的原因
用户评论