几天前,我读了一篇文章(我相信是在MSDN上),文章中说由.NET JIT生成的机器代码并不针对英特尔指令集。上面写着:“英特尔输了”。这是正确的吗?如果它没有针对Intel指令集,那么它的目标是什么指令集?
我在带有英特尔四核处理器的PC上运行.NET框架。因此,英特尔必须实现.NET目标的指令集。
发布于 2014-01-20 09:30:11
由.NET JIT编译器生成的
" The“这个词很不合适。有许多抖动,每一个都是为a特定处理器体系结构生成代码。就像桌面机器上使用的x86和x64抖动一样,移动设备的ARM抖动,XBox上使用的PowerPC抖动。而“失败”的Itanium抖动,是因为没有一个处理器设计要求编译器足够聪明才能生成性能良好的代码。.NET还通过.NET微框架支持许多嵌入式处理器,但它使用的是解释器,而不是抖动。
因此,英特尔必须实现.NET目标的指令集。
明显违反了声明中的因果关系。.NET必须用它的抖动来瞄准指令集,而不是反过来。英特尔不重视.NET,以前曾经设计过针对特定VM的处理器(哈里斯用于Forth语言,ARM用于Java),但这类处理器从未成为主流。
一贯的获胜策略是开发仍然可以执行旧程序的处理器,而不必重新编译它们。因此,x86和x64体系结构非常成功。这就像在.NET中那样做,英特尔和AMD处理器有一个抖动内置在处理器核心,从古老的x86指令集转换为内部无文件的监委会-类似一个。
发布于 2014-01-20 08:37:19
我想这种混乱是由于公共中间语言引起的。.NET编译成用于.NET的“程序集”指令集的CIL (以前称为或MSIL)。
CIL是一个独立于CPU和平台的指令集,可以在任何支持公共语言基础设施的环境中执行。即时编译涉及到将字节码转换为由CPU立即执行的代码.
然后,特定发行版(如x86-x64)的.NET框架发行版将CIL代码转换为本机CPU指令。
希望我帮了你!
https://stackoverflow.com/questions/21228855
复制相似问题