首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >健壮的计算机体系结构需要调用堆栈吗?

健壮的计算机体系结构需要调用堆栈吗?
EN

Software Engineering用户
提问于 2019-11-28 22:12:54
回答 4查看 1.6K关注 0票数 4

我还不太熟悉计算机体系结构的术语,所以请耐心等待。我似乎理解von体系结构相对于哈佛体系结构更健壮(“通用图灵机”),但对细节还不太了解。

在过去几个晚上查看调用堆栈之后,我仍然是迷惑。我还在这里和那里看到过一些论文(目前只是浏览摘要),比如没有调用堆栈的编程和其他文件,这让我想知道是否有任何系统/体系结构来定义没有调用堆栈的虚拟机。我真的不知道它会是什么样子,但也许有一些东西要检查。我说的不是简单的机器,像1960年以前的S时代的机器,没有递归,所以我想不需要调用堆栈。我指的是完全健壮/完整的计算机体系结构,它使用的不是调用堆栈。

EN

回答 4

Software Engineering用户

回答已采纳

发布于 2019-11-28 22:56:01

..。这让我想知道是否有任何系统/体系结构来定义没有调用堆栈的虚拟机。

延拓传递方式为所有函数调用启用了尾叫优化,因此不需要堆栈;但是,堆内存很可能用于保存捕获对局部变量的引用的闭包。

CPS在某些编译器中用作中间形式(例如,在虚拟指令集中),以表示显式控制流,特别是在异常和异常处理中发生的情况。

堆栈是一种非常有效的数据结构:堆栈的顶部几乎肯定在数据缓存中,而且分配和取消分配是超级快(即一条指令). --堆栈是C程序的必要部分,因此,如果没有对堆栈的显式支持,现代计算机就不太可能制造。

但是,要明确的是,MIPS和RISC V没有单独的硬件--专用的堆栈指针或推送和弹出指令--软件只是这样使用多种通用寄存器之一。

票数 13
EN

Software Engineering用户

发布于 2019-11-29 06:30:13

我不认为健壮性是一个问题。功能是,在最字面意义上。

暂时忘记实现细节,真正考虑一下调用堆栈是什么。它允许您调用子程序(函数),并从它们返回,继续您停止的地方。也就是说,它提供了将问题分成更小部分、创建功能构建块的可能性。

这是通用解决问题机器的一个基本特性,没有它就很难想象。这将是无用的,因为没有办法创造任何复杂的东西。

票数 2
EN

Software Engineering用户

发布于 2019-12-02 09:32:44

你所说的“健壮”是一个偏好的问题。

堆栈是有用的,但是体系结构没有必要直接定义它们。

如果程序想要的话,它们总是可以建立自己的堆栈。

对某些东西的硬件支持使其速度更快,但不太灵活。

具有调用堆栈的体系结构使函数调用速度快,但速度不快,因为通常与参数传递有关。

另一方面,在函数调用和返回方面,您被锁定在最后一个先到先出的世界中。如果您想使用协同机制,堆栈将不再帮助您。

我们拥有的硬件会影响我们编写的程序。我们编写的程序会影响我们想要的硬件。最后,我们所拥有的似乎是“必要的”,即使这只是众多选择中的一个。

票数 0
EN
页面原文内容由Software Engineering提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://softwareengineering.stackexchange.com/questions/401782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档