1

我正在阅读 ARM 过程调用标准:

http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0041c/Cegbidie.html

它说:

仅支持不需要帧指针寄存器的 APCS 变体。需要帧指针寄存器的 APCS 变体已过时。记录这些变体只是为了向后兼容。

有人能告诉我为什么吗?如果在编译时堆栈帧大小未知,我认为需要帧指针。

4

1 回答 1

3

假设调用约定指定了如何在函数退出时清理堆栈,您只需要拥有堆栈指针。编译器可以跟踪函数内的所有堆栈操作,因此无需将这些信息保存在单独的寄存器中。

这当然很方便,但不是绝对必要的。

于 2012-09-15T01:15:52.083 回答