说说x86架构的怪异之处

说说x86架构的怪异之处

作者:BlogUpdater |  时间:2021-10-15 |  浏览:124 |  评论已关闭 条评论

这事儿我得说说。
x86架构做了一些大多数现代处理器架构都没有做的奇怪事情,但是因为这一架构十分流行,广泛被使用在各行各业中,以至于人们觉得这些事情本来就是正常的,没什么好大惊小怪的。

那我想说的是:x86架构十分怪异。

x86架构只有8个通用计算寄存器,而其他的现代处理器所携带的寄存器都远远超过它。例如PPC,MIPS和Alpha处理器都自带有32个寄存器,而IA64架构则拥有128个。

x86使用栈进行函数参数传递,而其他处理器架构使用寄存器来传递。

x86允许非对齐的内存访问,如果出现了这种情况,没有异常发生,它会默默地修复这个未对齐错误。其他处理器则会激发出一个未对齐异常,从而可以选择由supervisor以巨大性能损失来模拟。

x86带有变长指令集。而其他处理器都是固定长度的指令集。(PPC, MIPS和Alpha都是一个固定32位长的指令集,IA64则是固定41位,是的,你没看错,是41位定长指令)

x86有一个十分严格的内存模型,其中外部内存访问与代码流发出内存访问的顺序相匹配。其他的内存模型较弱,需要明确的内存屏障来确保以特定顺序向总线发出(和完成)问题。

x86架构支持原子性的load-modify-store操作,而其他处理器则不支持。

x86在栈上传递函数返回地址,而其他处理器使用链接寄存器(Link Register)。

总结
当你编写你认为是可移植的代码时,请记住这一点。像许多事情一样,你可能觉得在正常不过,但是如果以一种更加宏观的角度来看,可能就不那么正常了。

最后
Raymond Chen的《The Old New Thing》是我非常喜欢的博客之一,里面有很多关于Windows的小知识,对于广大Windows平台开发者来说,确实十分有帮助。
本文来自:《The x86 architecture is the weirdo》

最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。

评论已关闭。