看来我在编程语言设计中有了调用堆栈的想法。但是我找不到(也许我只是没有足够努力地搜索)关于什么是堆栈框架的任何体面的解释。

因此,我想请某人向我解释一下。

最佳答案

堆栈帧是被推入堆栈的数据帧。在调用堆栈的情况下,堆栈帧将表示函数调用及其参数数据。

如果我没记错的话,函数的返回地址首先被压入堆栈,然后是局部变量的参数和空间。尽管这可能取决于体系结构,但它们共同构成了“框架”。处理器知道每个帧中有多少字节,并在将帧压入并弹出堆栈时相应地移动堆栈指针。

编辑:

更高级别的调用堆栈和处理器的调用堆栈之间有很大的区别。

当我们谈论处理器的调用堆栈时,我们谈论的是在汇编或机器代码中以字节/字级别使用地址和值。在谈论高级语言时,有“调用栈”,但是它们是运行时环境管理的调试/运行时工具,因此您可以(在较高级别)记录程序出了什么问题。在此级别上,通常知道行号,方法和类名之类的东西。到处理器获得代码时,它完全没有这些东西的概念。

07-28 03:02
查看更多