最近我一直在问自己的一个真正的问题是,什么样的设计选择使x86成为一个小端的架构而不是大端的架构?为什么x86是小端的?
回答
它反映考虑存储器之间的差,使其总是被与考虑它在一个时间安排一个字节的时间,其中单元的尺寸可以变化(字节,字,双字等)来组织一个单元
很大程度上,出于同样的原因,你在开始时加,因为携带朝着更显著数字传播至少显著位(右端)。首先放置最低有效字节允许处理器在读取偏移量的第一个字节后开始添加。
你已经做了足够的组件的编码和调试,你可以来,这不是小尾数是这样的结论后,奇怪的选择,这是奇怪的是,我们人类使用大端。
这是很考古,但它很可能不是英特尔的选择。英特尔设计的向下兼容性处理器是主要关注点,因此可以轻松地将汇编代码从旧架构转换为新架构。这将时钟从8086降低到8080,成为第一个排序非常重要的微处理器,即Intel 8008。
这时候,CTC(后来被命名为数据点)处理器开始来到英特尔索要他们的数据终端产品的帮助。最初由Victor Poor和Harry Pyle设计,它在MSI(许多芯片)中有一个逻辑处理器设计。他们要求英特尔为他们提供一个使用512位移位寄存器的存储解决方案。
这不是英特尔的心仪的产品,他们把对这些类型的定制设计工作生存的加速时间为他们的1024位的RAM芯片。 Tedd Hoff,Stan Mazor和Larry Potter研究了这个设计,并提出了一个RAM处理器。最终成为8008. Poor和Pyle因设计指令集而获奖。
,他们选择小尾数为this interview with Poor可信。它相当快跳过通过它和面试,而采用分散镜头,但相关的部分第24页:
Shustek: 因此,例如,存储号码至少显著 字节首先,从事实来这是 串行,你需要先处理低位。
差: 你不得不这样做的。你没有选择。
“有没有选择”的评论很奇怪,似乎只适用于MSI处理器的位串行设计。这也是他们购买移位寄存器而不是RAM的原因。它再次出现在第34页:
亨德利: 你从 他们对设计或任何的这些细节记得任何的推背的...
差: 一个他们是8比特的一位。他们想要一个8位宽的部分,并且最终,他们是如何构建它的 。
差: 但它仍在循环。但是,你看,有很多有趣的观点是否会有一个大的结局,或者一个小的结局部分可能在那个时候被改变,但是我们没有。我们刚刚离开它...
亨德里: 即使你去了八位?
差: 没错。这也就是为什么英特尔 产品线是这样今天
最终CTC没有使用8008,这一年结束了为时已晚,他们已经通过实施再微星处理器。微处理器的设计当然是CTC的知识产权,但他们将设计成本交由Intel处理。错误的位:)关于专利权的法律适用于后来。
因此,据了解,由于串行端口的工作方式,英特尔最终以小端技术结束。
嗯,这是一个非常好的答案,我可以正确地说串口是串口工作的,如果情况是big-endian,那么在每次操作中都只是浪费CPU。我想我的理解是正确的,所以第二个问题,仍然是小端是一个要求?我认为串口现在是遗留的,不是吗?或者还有其他什么原因需要设计成小端? – FZE 2016-03-28 13:32:07
确实需要坚持使用字节顺序来保持程序在体系结构更改中的兼容性。串行端口并不完全是遗留的,在嵌入式设计中仍然很常见,许多USB和蓝牙设备供应商通过串行端口api通过仿真设备驱动程序中的串行端口将接口暴露给其设备。 – 2016-03-28 13:45:48
谢谢先生的进一步解释。 – FZE 2016-03-28 14:46:04
- 1. 为什么Linux(x86)的页面大小是4 KB,这是如何计算的?
- 2. 那么在x86-64上它是大端?
- 3. 什么是x86 cr0 WP位的目的?
- 4. x86 IMUL结果是正确的,为什么?
- 5. 为什么x86寄存器的命名方式是?
- 6. 什么是K3D x86 ISA扩展?
- 7. 什么是端点?
- 8. 为什么在WAV文件头中使用小端和大端?
- 9. 什么是大小为在Matlab
- 10. HTML 5客户端存储的大小限制是什么?
- 11. OAuth2:什么是“客户端”?
- 12. 什么是Qt端口?
- 13. 什么是Oracle客户端?
- 14. VS只为x86配置创建winforms应用程序,为什么?
- 15. x86:使用寄存器作为中间件,为什么?
- 16. 什么是使用calloc for x86 ISA的正确方法
- 17. 什么是x86架构中的“非虚拟化”指令?
- 18. 顺序和障碍:x86上'lwsync'的等效指令是什么?
- 19. “leal 0x10(%ebx),%eax”x86汇编指令中的0x10是什么?
- 20. x86架构中的“EU”是什么? (计算有效地址?)
- 21. x86组装中的“push ebp”是什么意思?
- 22. x86线“imulq $ 44,(%rbx),%rax”是做什么的?
- 23. “rep stos”x86汇编指令序列的作用是什么?
- 24. 什么是最简单的x86嵌入式Linux?
- 25. x86-64 AT&T程序集中地址的含义是什么?
- 26. 什么是一些好的x86汇编语言资源?
- 27. x86与x386晶体管之间的主要区别是什么
- 28. x86转换为小写汇编
- 29. 为什么我们需要x86上的zone_highmem?
- 30. 什么是图像大小?
设计权衡。有关几个示例,请参阅http://en.wikipedia.org/wiki/Endianness#Optimization。 – 2011-03-03 19:42:46