我们知道通用中间语言(CIL)或(MSIL)是面向对象的汇编语言.
但Just In Time Compiler(JIT)是否真的将每条指令映射到底层处理器的操作码?
如果是这样,我们可以将CIL称为汇编语言,将JIT称为汇编程序
注意:
维基百科没有在其list of assembly languages中将CIL列为汇编语言
解决方法
汇编由特定处理器的机器代码指令的助记符组成.直接表示1和0,使核心执行代码,但用文本编写,使人们很容易.这与CIL非常不同:
>你不能购买执行CIL的处理器
> CIL没有针对特定处理器,抖动确实如此
> CIL假定基于堆栈的执行模型,处理器主要基于寄存器
> CIL代码从其原始形式进行了优化
> CIL指令没有一对一的转换为处理器指令
最后一个子弹是关键的,一个使CIL与字节码强烈不同的设计决策是CIL指令是无类型的.只有一条ADD指令,但处理器有很多版本.采用byte,short,int,long,float和double操作数的特定实例.必需,因为处理器核心的不同部分用于执行添加.根据从先前的CIL指令推断的操作数的类型,抖动选择正确的抖动.
就像C#语言中的运算符一样,它也可以使用不同的操作数类型.这真的使CIL中的L显着,它是一种语言.一个简单的,但它只是简单,以帮助轻松编写抖动.