【问题标题】:What benefits does the use of the little-endian notation have in x86 assembly language? [duplicate]在 x86 汇编语言中使用 little-endian 表示法有什么好处? [复制]
【发布时间】:2012-07-25 00:25:34
【问题描述】:

可能重复:
Why is x86 little endian?

就我个人而言,我敢打赌很多人都会同意这一点,发现大端字节序表示法更易于阅读和理解。我想大端字节序对于 CPU 来说就像小端字节序一样容易处理。

The Dark Corners of x86 的文章中,David Chisnall 指出

“[...] 在当时看来是个好主意的功能逐渐被添加,直到我们只剩下被称为现代 x86 架构的杂物。”

既然 big-endian 字节排序应该同样容易 - 如果不是更容易 - 处理,尤其是在浮点类型方面,那么 little-endian 与 big-endian 相比有什么好处?

【问题讨论】:

  • 维基百科文章为每个字节序提供了一个相当不错的优缺点列表。有什么你想要的吗?
  • 顺便说一句,我会对链接的文章有点小心(甚至可能是“谨慎”)——只是浏览前几页就发现了一些不准确之处,有些相当明显。
  • @Kierrow - 文章假设设计师从头开始创建 8086,同时吸食杂草。许多设计决策都受到与早期 8080 和 8085 处理器兼容的愿望的影响。同样,在这个数额将花费数十亿美元并填满谷仓的时候为 4GB RAM 设计它是不合理的。回想起来也不行。

标签: assembly x86 endianness


【解决方案1】:

没有。

架构使用或者 big-endian 或 little-endian 排序确实没有具体的理由;有些人喜欢他们每个人。甚至有一些芯片可以两者兼得!但在大多数情况下,架构会选择排序,而这就是你所使用的。世界上有太多的 x86 代码让切换顺序变得毫无意义,即使 有充分的理由。

【讨论】:

    【解决方案2】:

    我发现小端对硬件来说更容易,而对人类来说大端更容易。今天,它根本不重要,因为字节通道都是独立于字节序而被推挤的,而且一些架构无论如何都会这样做(ARM有两个版本的大版本和一个小版本)。可变字长指令和允许未对齐传输是比大与小更大的问题。

    由于历史偏好以及随之而来的神话和观点,今天仍然存在强烈的偏好。就像宗教和政治一样,这是一个禁忌话题,可以而且确实会引发激烈的争论。归根结底,每一方都只是在他们一方的支持下更强大,真正的皈依者很少。这些强烈的意见很可能是新设计宣布其中之一的来源。

    随着 arm 主导处理器世界,x86 涵盖台式机、笔记本电脑和服务器、pci(e) 约定等,我们确实生活在一个小端世界中,不管你喜不喜欢。

    如果您“进行系统工程”,则不会有任何字节顺序问题,因为接口规范将定义哪些字节在哪里,并且双方都符合接口规范。

    【讨论】:

      猜你喜欢
      • 2017-01-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-05
      相关资源
      最近更新 更多