【发布时间】:2012-07-28 12:33:30
【问题描述】:
即时编译器(JIT) 是否真的将程序中的每个公共中间语言(CIL) 指令映射到底层处理器的opcodes?
如果是这样我们可以称 CIL 为汇编语言而 JIT 为汇编器吗
注意: 维基百科在其list of assembly languages 中没有将 CIL 列为汇编语言
【问题讨论】:
-
有趣的问题,我试着回答,但并不那么容易。我认为您不能将其视为汇编语言,因为 tehre 不是直接运行它的真正 cpu。
-
@FelicePollano 然后 CIL 可能是部分汇编语言..:)
-
汇编语言助记符与 CPU 特定机器码指令 1:1 对应。汇编器只是将(某种)人类可读的汇编代码映射到这些指令。 CIL 绝对不是这种情况。这不是部分的,只是不是——汇编语言有一个非常明确的定义。
-
@jamietre 你是对的,但后来人们称它为面向对象的汇编语言
-
我什至不确定“面向对象”对于 CIL 是否那么重要(尽管 CLI 的架构显然支持 OO 范式)。它的基于堆栈的评估模型更加突出,强调除了字节码之外还提供元数据。您的典型汇编语言根本不关心元数据。