广义上的X86 包括 狭义X86 和 狭义X64
目前( 2022 - 2 - 18 11 : 01 : 43 ) 市场上常见的 PC CPU架构主要是一种
AMD的AMD64架构
以前的CPU架构是x86的,也就是32 位。
X86 和 X64是硬件上不兼容的,即32 位软件不能直接在64 位上运行。
X86 : 又名 i686
X64 : 又名 X86_64 AMD64
64 位CPU如何运行32 位程序
1. windows的处理方法
把x86架构的翻译成x64。
在c: \windows\system32就是64 位运行库,c:\windows\syswow64就是32 位运行库。
因此实际上32 位程序依旧好好的在64 位上跑,64 位windows运行32 位程序是通过 WOW64这么个子系统运行的。
运行模式
实模式
16 bit
早期 CPU 是为了支持单道程序运行而实现的,
单道程序能掌控计算机所有的资源,早期的软件规模不大,内存资源也很少,所以实模式极其简单,
仅支持 16 位地址空间,分段的内存模型,对指令不加限制地运行,对内存没有保护隔离作用
保护模式
32 bit
保护模式相比于实模式
增加了一些控制寄存器和段寄存器,
扩展通用寄存器的位宽,
所有的通用寄存器都是 32 位的,还可以单独使用低 16 位,这个低 16 位又可以拆分成两个 8 位寄存器
随着多道程序的出现,就需要操作系统了。
内存需求量不断增加,所以 CPU 实现了保护模式以支持这些需求。
保护模式包含特权级,对指令及其访问的资源进行控制,对内存段与段之间的访问进行严格检查,没有权限的绝不放行,
对中断的响应也要进行严格的权限检查,扩展了 CPU 寄存器位宽,
使之能够寻址 32 位的内存地址空间和处理 32 位的数据,
从而 CPU 的性能大大提高。
长模式
64 bit
长模式相比于保护模式,
增加了一些通用寄存器,
并扩展通用寄存器的位宽,
所有的通用寄存器都是 64 位,
还可以单独使用低 32 位。这个低 32 位可以拆分成一个低 16 位寄存器,低 16 位又可以拆分成两个 8 位寄存器
长模式,又名 AMD64 模式,最早由 AMD 公司制定。
由于软件对 CPU 性能需求永无止境,
所以长模式在保护模式的基础上,把寄存器扩展到 64 位同时增加了一些寄存器,
使 CPU 具有了能处理 64 位数据和寻址 64 位的内存地址空间的能力。
长模式弱化段模式管理,只保留了权限级别的检查,
忽略了段基址和段长度,而地址的检查则交给了 MMU。
参考
https:
第 1 卷: basic- architecture
https:
第 2 卷: instruction- set- reference
https:
第 3 卷: system- programming- guide
https:
其他 : 64 - ia- 32 - architectures- software- developer 在 intel 网站的搜索结果
https: