虚拟机和无虚拟机 - 堆栈和跟踪
Posted
技术标签:
【中文标题】虚拟机和无虚拟机 - 堆栈和跟踪【英文标题】:Virtual machine and none virtual machine - stack and trace 【发布时间】:2013-01-14 05:24:14 【问题描述】:我在这里阅读了很多问题,这些问题解释了堆栈和堆是什么,例如这个:What and where are the stack and heap?,非常有帮助。
我了解高级语言被编译成中间语言,例如Java 的字节码和 .NET 程序的 MSIL。然后将 MSIL 和字节码编译成机器码。
我的理解是中间语言使用堆栈和堆,然后程序被编译成机器代码,这取决于平台,例如基于 Windows 的注册。
但是,在问题中,我已链接到一些回答者,例如Brian R. Bondy 提供了 C 和 C++ 示例。我知道C++没有虚拟机,直接编译成机器码。我的问题是:没有虚拟机的编程语言有堆栈和堆吗?在这些编程语言的情况下,它们是否使用堆栈和堆作为中间表示,同时直接编译为机器代码?
更新 我意识到有基于堆栈和基于寄存器的虚拟机。我要问的问题是:所有物理机都基于寄存器吗?
【问题讨论】:
【参考方案1】:我发现有一些物理机器的例子,其中处理器具有基于堆栈的指令集,例如RTX2000 系列、UCSD Pascal p-Machine 和 Burroughs 的 B5000 和 B6000 系列机器(取自这个问题:Stack-based machine depends on a register-based machine?)。看来处理器使用的实际指令集可以是基于堆栈的。
【讨论】:
以上是关于虚拟机和无虚拟机 - 堆栈和跟踪的主要内容,如果未能解决你的问题,请参考以下文章