这事儿我得说说 。
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》
【x86|说说x86架构的怪异之处】
- iPhone|第一次用苹果手机是什么样的感觉?用了十年苹果手机,说说感受
- 德尔塔|从新冠病毒最新变种Omicron说说我的经历
- 赛扬|奔腾和赛扬终于要换代了,用上最新的Alder Lake架构
- bilibili|说说RegisterClass这个函数返回值的作用
- 双十一|盘点我心中的今年双十一最超值的10款数码产品,说说你都买了啥
- x86|全球高端机市场重新洗牌:苹果排第二,华为未上榜,国产品牌占4席
- 高通骁龙|首款骁龙8 Gen1平板跑分现身:三丛集架构、3GHz超大核
- CPU|常见的指令集架构类型
- 耳机|动铁耳机和动圈耳机哪种更好?玩了6年耳机,给您说说
- 操作系统|推送!谷歌全新操作系统脱离Linux内核,支持arm64+X86