2

我在这里阅读了很多问题,这些问题解释了堆栈和堆是什么,例如这个:堆栈和堆是什么以及在哪里?,这非常有帮助。

我知道高级语言被编译成中间语言,例如 Java 的字节码和 .NET 程序的 MSIL。然后将 MSIL 和字节码编译成机器码。

我的理解是中间语言使用堆栈和堆,然后程序被编译成机器代码,这取决于平台,例如基于 Windows 的寄存器。

但是,在我已经链接到一些回答者的问题中,例如 Brian R. Bondy 提供了 C 和 C++ 示例。我知道C++没有虚拟机,直接编译成机器码。我的问题是:没有虚拟机的编程语言有堆栈和堆吗?在这些编程语言的情况下,它们是否使用堆栈和堆作为中间表示,同时直接编译为机器代码?

更新我意识到有基于堆栈和基于寄存器的虚拟机。我要问的问题是:所有物理机器都基于寄存器吗?

4

1 回答 1

0

我发现有一些物理机器的例子,其中处理器具有基于堆栈的指令集,例如 RTX2000 系列、UCSD Pascal p-Machine 和 Burroughs 的 B5000 和 B6000 系列机器(取自这个问题:Stack-based机器依赖于基于寄存器的机器?)。看来处理器使用的实际指令集可以是基于堆栈的。

于 2013-01-30T15:51:20.117 回答