我在这里阅读了很多问题,这些问题解释了堆栈和堆是什么,例如这个:堆栈和堆是什么以及在哪里?,这非常有帮助。
我知道高级语言被编译成中间语言,例如 Java 的字节码和 .NET 程序的 MSIL。然后将 MSIL 和字节码编译成机器码。
我的理解是中间语言使用堆栈和堆,然后程序被编译成机器代码,这取决于平台,例如基于 Windows 的寄存器。
但是,在我已经链接到一些回答者的问题中,例如 Brian R. Bondy 提供了 C 和 C++ 示例。我知道C++没有虚拟机,直接编译成机器码。我的问题是:没有虚拟机的编程语言有堆栈和堆吗?在这些编程语言的情况下,它们是否使用堆栈和堆作为中间表示,同时直接编译为机器代码?
更新我意识到有基于堆栈和基于寄存器的虚拟机。我要问的问题是:所有物理机器都基于寄存器吗?