【发布时间】:2014-02-04 16:49:30
【问题描述】:
在我的汇编语言书中,虚拟机级别如下所列:
- 4 级:高级语言
- 3 级:汇编语言
- 2 级:指令集架构 (ISA)
- 1 级:数字逻辑
根据本书,Level 2 (ISA) 是针对处理器的指令; ISA 也称为机器语言。此级别中的每条指令要么直接由计算机硬件执行,要么由嵌入在微处理器芯片中的称为微程序的程序执行。
2 级以上是汇编语言 3 级,提供翻译层以使大规模软件开发变得实用的编程语言。此级别使用简短的助记符,如 ADD、SUB 和 MOV,可以轻松地在级别 2 上翻译成 ISA。这些类型的程序必须在 ISA 级别完全翻译或汇编成机器语言,然后才能执行。
顶层是 4 级高级编程语言,例如 C、C++ 和 Java。这些被描述为包含强大语句的语言,这些语句可以翻译成多种汇编语言指令。
话虽如此,我并没有完全理解高级语言(在本例中为 Java)与汇编语言之间的关系。在我看来,高级语言被简化为单个程序语句可能固有地执行许多代码行的功能,这与汇编不同,每个动作都需要一个明确的语句。
任何人都可以提供一些输入来为我清除它吗?这是我第一次研究 Assembly,到目前为止,它与我在 C# 中的经历截然不同。
【问题讨论】:
-
你说的很对。我无法关注你没有关注的地方
-
你的书遗漏了一个层次——Java(以及C#和VB)产生的IL,这是编译器产生的,介于3和4之间。当应用程序运行时,IL是翻译成汇编。
-
1 级以下应该是 0 级:晶体管。我们可以争论-1级是否由各种掺杂的硅、锗或其他在一定程度上携带电子的介质(“半导体”)制成的几何结构组成。这些级别的基本意思是,您可以使用 N-1 级设备相对轻松地构建 N 级,而无需使用 >N 级抽象。
-
另外,在汇编中,指令与 CPU 密切相关。在一种类型的 CPU 上运行的指令很可能不会被不同类型的 CPU 理解。
-
还有更多的关卡。他们所说的“高级语言”实际上是大多数人所说的直接编译为汇编代码的低级语言(例如 C、C++、Lisp 的某些方言、D、Obj-C)。还有另一种级别的语言被认为是在以低级语言级别运行的 VM 上运行的高级语言。这些是 Java(JVM)、C#(CLR)、Ruby(YARV,有时是 JVM)、Python(python 解释器)等语言。