我在这里读了很多问题,它们解释了堆栈和堆是什么,例如这个:What and where are the stack and heap?,它非常有帮助。
我知道高级语言被编译成一种中间语言,例如用于Java的字节码和用于.NET程序的MSIL。然后将MSIL和字节码编译成机器码。
我的理解是,中间语言使用堆栈和堆,然后程序被编译成机器代码,这是与平台相关的,例如基于windows的寄存器。
然而,在问题中,我已经链接到一些回答者,例如Brian R.Bondy提供了C和C++示例。我知道C++没有虚拟机,直接编译成机器码。我的问题是:没有虚拟机的编程语言有堆栈和堆吗?在这些编程语言的情况下,它们是否使用堆栈和堆作为中间表示,同时直接编译为机器码?
更新我意识到有基于堆栈和基于寄存器的虚拟机。我要问的问题是:所有的物理机都是基于寄存器的吗?
发布于 2013-01-30 23:51:20
我发现有一些物理机器的例子,其中处理器具有基于堆栈的指令集,例如RTX2000系列、UCSD Pascal p-Machine和Burroughs的B5000和B6000系列机器(取自此问题:Stack-based machine depends on a register-based machine?)。看起来处理器使用的实际指令集可以是基于堆栈的。
https://stackoverflow.com/questions/14603264
复制相似问题