您可以在互联网上看到汇编代码和汇编编码器,但几乎没有字节码。这是为什么 ?汇编编程的需求和优点也适用于字节码编程。
字节码编程远不如汇编编程流行/常见的另一个原因是字节码的通用性——它的简单性。
字节码指令集主要是“ultra-RISC”,非常简单的指令。设计有两个目的,为虚拟机提供快速翻译/映射为本机指令集的能力,并允许高级编译器轻松创建接近本机的字节码。
另一方面,汇编器也有这样简单的通用部分 - 这些是字节码解释器/即时编译器实际用来实现字节码功能的部分。很少有人专门使用本机指令集的这些部分来编写汇编程序。 (即时)编译器会为您完成这项工作。
但汇编器有多得多除此之外,尤其是 SIMD/向量指令。这些指令对于非常特殊的工作负载(最广泛意义上的“数据流” - 任何像德古拉(dracula)通过女士喉咙一样搅动数据的东西)来说都是专用且高效的。迄今为止,在某些情况下,一些人为干预可能会超出编译器结果几个数量级。这样做通常需要使用此类向量指令,以一种编译器可能不会被迫为您执行的特定方式。
付出的代价是必须编写本机汇编函数。
字节码缺乏这些特殊用途的指令扩展,并且像这样扩展字节码将首先失去字节码的最大优势之一。这将使其无法在 CPU 类型之间移植 - 例如,x86/x64 (SSEx)、ARM (Neon) 或 PowerPC (AltiVec) 的矢量扩展差异太大,无法在顶部映射单个垫片层。
据,直到...为止teaching汇编级编程不需要实际的 CPU 指令集; Donald Knuth 在《计算机编程艺术》中使用了名为 MIX/MMIX 的“虚拟”汇编器很长时间,以至于它比“字节码”一词的出现还要早几十年。可以通过 x86 汇编语言教授的概念也可以通过 .NET 字节码教授。
但是人们编写汇编语言的主要原因(学术界之外,请参阅上一段)——利用通过特殊指令集扩展实现的特定于平台的优化——并不是直接编写字节码的有效理由。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)