Assembly 为什么x86丑陋?为什么与其他人相比,它被认为是低劣的?
我一直在阅读一些SO归档文件,并遇到了针对x86体系结构的声明Assembly 为什么x86丑陋?为什么与其他人相比,它被认为是低劣的?,assembly,x86,mips,x86-64,cpu-architecture,Assembly,X86,Mips,X86 64,Cpu Architecture,我一直在阅读一些SO归档文件,并遇到了针对x86体系结构的声明 说 “PC架构一团糟,任何操作系统开发人员都会告诉你。” ()说 “认识到x86架构最糟糕的一面” 说 “大多数大学教授MIPS之类的汇编语言,因为它更容易理解,x86汇编语言真的很难看” 还有更多类似的评论 我试着搜索,但没有找到任何原因。我不认为x86不好,可能是因为这是我唯一熟悉的体系结构 有人能告诉我为什么认为x86与其他人相比丑陋/糟糕/低劣。可能的原因有: x86是一个相对古老的系统(它的前身毕
- 说
“PC架构一团糟,任何操作系统开发人员都会告诉你。” - ()说
“认识到x86架构最糟糕的一面” - 说
“大多数大学教授MIPS之类的汇编语言,因为它更容易理解,x86汇编语言真的很难看”
有人能告诉我为什么认为x86与其他人相比丑陋/糟糕/低劣。可能的原因有:
输入
和输出
的I/O指令)if (DF==0)
*(byte*)DI++ = *(byte*)SI++;
else
*(byte*)DI-- = *(byte*)SI--;
这是一条执行加载、存储和两个加法或减法(由标志输入控制)的指令,每个指令都是RISC机器上的独立指令
虽然MIPS(和类似的体系结构)的简单性并不一定使其优越,但对于讲授汇编程序入门课程来说,从一个更简单的开始是有意义的。有些汇编类教授x86的一个超简化子集,称为,它的简化程度超出了对实际使用没有用处的程度(例如,没有移位指令),或者有些只教授基本的x86指令2016年更新:Anandtech发布了一份报告
编辑:这不应该是x86的bash!聚会。考虑到问题的措辞,我别无选择,只能做一些抨击。但除了(1)之外,所有这些事情都是有充分理由的(见评论)。英特尔的设计师并不愚蠢——他们想用自己的体系结构实现一些东西,这些是他们为了实现这些东西而必须支付的一些税费。我不是专家,但似乎人们不喜欢它的许多特性可能是它性能好的原因。几年前,拥有寄存器(而不是堆栈)、寄存器帧等被视为使体系结构看起来更简单的好解决方案。然而,如今,重要的是缓存性能,x86的可变长度字允许它在缓存中存储更多的指令。我相信反对者指出的“指令解码”曾经占据了芯片的一半,但现在已经不是这样了 我认为并行性是当今最重要的因素之一——至少对于已经运行得足够快、可以使用的算法来说是如此。在软件中表达高并行性允许硬件分摊(或通常完全隐藏)内存延迟。当然,未来更深远的架构可能是量子计算
我从英伟达听说英特尔的一个错误
mov eax,b
xor edx,edx
div dword ptr c
mov a,eax
mov r5,addr b
mov r5,[r5]
mov r6,addr c
mov r6,[r6]
div r7,r5,r6
mov r5,addr a
mov [r5],r7