joh*_* j. 2 64-bit x86 terminology x86-64
这个问题是关于 32 位与 64 位 x86 的术语。
如果我有 2 个包含相同程序源代码的目录 - 一个用于 32 位 Windows,另一个用于 64 位 Windows,那么这些文件夹的更正确名称是什么:
我已经阅读了一些网络资源,但无法理解。仅作记录:
x86 可以是一个广义的术语,涵盖所有向后兼容 8086 的 CPU,以及对架构的所有扩展,包括 x86-64。
请注意,IA-64 根本不是x86,而是Itanium(具有显式推测/并行性的 64 位 VLIW 架构)。它也是由 Intel 设计的,但在兼容性或设计方面与 x86 完全无关。(早期的 IA-64 CPU 也集成了 x86 内核,以实现兼容性。Intel 正在推动 IA-64,而 AMD 则在推动 AMD64/x86-64)
英特尔有时会说他们的 CPU 具有 IA 核心 + 集成 GPU 以及每个 IA 核心之外的其他逻辑。(IA = 英特尔架构 = x86)。
32位x86具体(不包括16位或64位)可以调用
Program Files (x86)具有该名称的目录。这种选择可能会给每个人带来潜在的术语混淆,因为与 ARM 或 MIPS 相比,“x86”仍然是迄今为止泛指架构的最佳方式。永远不要称它为 x32。x32 是 x86-64 System V ABI 的 ILP32 变体:64 位模式下的 32 位指针。 https://en.wikipedia.org/wiki/X32_ABI
64 位 x86更容易具体指代(不包括 32 位和 16 位):
_在大多数语言中只能作为函数/变量名称的一部分。)不是 IA-64,那是一个单独的架构。
当然,如果你想迂腐,x86-64的CPU是需要支持legacy模式的,所以你可以在x86-64的CPU上运行纯32位的OS,而且还是64位的CPU。
运行32位的用户空间中的64位内核,CPU处于“兼容性”模式,这是一个很大一样,除了页表格式的32位保护模式的具有52位的物理地址。(超过来自 PAE 页表的 36 位物理地址宽度,x86-64 页表格式基于它。)用户空间很难区分在 32 位内核下运行与在 32 位内核下运行之间的区别。一个 64 位内核,除了特定于操作系统的东西,比如用系统调用询问内核。
许多项目使用i386vs. x86-64或amd64. 这将是我的建议,因为这是最不明确的。(或者如果你真的不关心与比 PPro 更旧的 CPU 的兼容性的话,也可以是 i686。)
有些,例如 GMP(GNU MultiPrecision 库),它为许多架构手写了 asm,使用“x86”和“x86_64”。 https://gmplib.org/repo/gmp/file/tip/mpn。
(GMP 为不同的 x86 CPU 提供了相同功能的多个手动调整版本。在“x86”中,有一些子目录具有针对 Pentum、Core 2、Haswell 和/或利用指令集扩展(例如BMI2。这是不寻常的;大多数项目都没有具体说明。例如,有些项目可能会有一些东西可以利用 AVX 或 AVX512 或 SSE4.1,但这通常只是在源文件中。)
有时也称为:
注1:严格来说,这是不正确的,因为
x86 涵盖向后兼容 8086 的所有 CPU 以及该架构的所有扩展,包括 x86-32 和 x86-64。
不过,这种缩写在 Windows 世界中经常使用。
注 2:不应用于避免与 x32 ABI 混淆。
资料来源:
| 归档时间: |
|
| 查看次数: |
1355 次 |
| 最近记录: |