gpt4 book ai didi

assembly - 为什么字节码编程不如汇编编程那么流行或盛行?

转载 作者:行者123 更新时间:2023-12-02 22:13:00 25 4
gpt4 key购买 nike

您可以在互联网上看到汇编代码和汇编编码器,但几乎没有字节码。这是为什么 ?汇编编程的需求和优点也适用于字节码编程。

最佳答案

字节码编程远不如汇编编程流行/常见的另一个原因是字节码的通用性 - 它的简单性。

字节码指令集主要是“ultra-RISC”,非常简单的指令。设计有两个目的:为虚拟机提供快速翻译/映射为 native 指令集的能力,并允许高级编译器轻松创建近乎 native 的字节码。

另一方面,汇编器也有这样简单的通用部分 - 这些是字节码解释器/即时编译器实际用来实现字节码功能的部分。很少有人专门使用 native 指令集的这些部分来编写汇编程序。 (即时)编译器会为您完成这项工作。
但汇编程序的功能远不止这些,尤其是 SIMD/向量指令。这些指令对于非常特殊的工作负载(最广泛意义上的“数据流” - 任何像德古拉(dracula)通过女士喉咙一样搅动数据的东西)来说都是专用且高效的。迄今为止,在某些情况下,一些人为干预可能会超出编译器结果几个数量级。这样做通常需要使用此类向量指令,以一种编译器可能不会被迫为您执行的特定方式。

付出的代价是必须编写 native 汇编函数。

字节码缺乏这些特殊用途的指令扩展,并且像这样扩展字节码会首先失去字节码的最大优势之一。这将使其无法在 CPU 类型之间移植 - 例如,x86/x64 (SSEx)、ARM (Neon) 或 PowerPC (AltiVec) 的矢量扩展差异太大,无法在顶部映射单个垫片层。

教学汇编级编程而言,并不需要实际的 CPU 指令集;而是需要实际的 CPU 指令集。 Donald Knuth 在《计算机编程的艺术》中使用了名为 MIX/MMIX 的“虚拟”汇编器很长时间,以至于它比“字节码”一词的出现还要早几十年。可以通过 x86 汇编语言教授的概念也可以通过 .NET 字节码教授。

但是人们编写汇编语言的主要原因(学术界之外,请参阅上一段)——利用通过特殊指令集扩展实现的特定于平台的优化——并不是直接编写字节码的有效理由。

关于assembly - 为什么字节码编程不如汇编编程那么流行或盛行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5925975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com