我几天前正在阅读一篇文章(我相信它是在MSDN上),它说.NET JIT编译器生成的机器代码并不针对英特尔指令集。它说:“英特尔输了”。它是否正确?如果它没有以英特尔指令集为目标,那么它的目标是什么?
我在装有Intel四核处理器的PC上运行.NET框架。因此,英特尔必须实现.NET目标的指令集。
答案 0 :(得分:4)
由.NET JIT编译器生成
“the”这个词非常不合适。有许多抖动,每个都设计用于生成a
特定处理器体系结构的代码。就像你在台式机上使用的x86和x64抖动一样,移动设备的ARM抖动,XBox上使用的PowerPC抖动。由于没有处理器设计要求编译器足够智能以生成高性能代码,因此“丢失”的Itanium抖动表现良好。 .NET还通过.NET Micro Framework支持许多嵌入式处理器,但它使用的是解释器,而不是抖动。
因此,英特尔必须实现.NET目标
的指令集
该声明中存在明显的因果关系违规行为。 .NET必须以其抖动为目标集,而不是相反。英特尔不关注.NET。设计用于定位特定VM的处理器之前已经完成(Harris for the Forth语言,ARM for Java),但这样的处理器从未成为主流。
持续获胜的策略是开发能够执行旧程序而无需重新编译它们的处理器。因此,x86和x64架构非常成功。这与在.NET中完成的方式相同,英特尔和AMD处理器在处理器内核中内置了一个抖动,从古老的x86指令集转换为内部未记录的RISC指令集。
答案 1 :(得分:0)
我认为由于Common Intermediate Language而引起的混乱。 .NET编译成CIL(以前称为Microsoft中间语言或MSIL),它是.NET的“汇编”指令集。
CIL是独立于CPU和平台的指令集,可以在支持公共语言基础结构的任何环境中执行...即时编译涉及将字节代码转换为可由CPU立即执行的代码。 / p>
特定发行版的.NET框架分发(例如x86-x64)然后将CIL代码转换为本机CPU指令。
希望我帮忙!