访问机器堆栈上激活帧中的链接

发布于 2024-10-15 09:14:38 字数 100 浏览 0 评论 0原文

我知道访问堆栈上的链接+一个显示数组 是在嵌套过程中访问非本地对象的一种实现方式。 任何人都可以向我推荐有关该主题的阅读材料(谷歌没有帮助) 或者可以简单地解释一下它是如何工作的? 谢谢

I know that access links on the stack + a display array
are a way of implementation for reaching non-local objects in nested procedures.
Can anyone refer me to a reading material on the subject (google didn't help)
or can simply explain me how it works?
thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

灯角 2024-10-22 09:14:38

我不知道显示数组是什么意思,但嵌套过程支持通常不使用数组,而是将每个父级的帧指针传递给每个子级。由于您可以查找父级的父堆栈帧(通常为parentparentptr:=[myparentptr+constant]),因此这会创建堆栈帧的链接列表。

在编译器中,您必须为每个帧构建一个变量列表,然后您可以构建一个表达式(加载帧指针,然后通过帧指针间接加载来加载变量)来访问它。在深层嵌套结构中,可能值得查找一次所需的父框架并将它们存储在堆栈中。

I don't know what you mean with display array, but nested procedure support usually does not use an array, but the frame pointer of the each parent is passed to the each child. Since you can lookup the parent's parent stackframe ( typically parentparentptr:=[my parentptr+constant]), this creates a linked list of stackframes.

In the compiler you have to then build a list of variables for each frame, and then you can build an expression (load frame pointer, then load variable by indirect load via framepointer) to access it. In deeply nested structures it is probably worthwhile to lookup the needed parentframes once, and store them on the stack.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文