这个问题是关于32位和64位x86的术语的。
如果我有2个目录带有相同程序的源代码-一个目录用于32位Windows,另一个目录用于64位Windows,那么这些文件夹的更正确的名称是:
我已经阅读了一些网络资源,但听不懂。仅作记录:
答案 0 :(得分:3)
x86可以是一个广义的术语,它涵盖了所有与8086向后兼容的CPU,以及包括x86-64在内的所有体系结构扩展。
请注意,IA-64根本不是 x86,它是Itanium (a 64-bit VLIW architecture with explicit speculation / parallelism)。它也是由英特尔设计的,但是就兼容性或设计而言,它与x86完全无关。 (出于兼容性考虑,早期的IA-64 CPU也集成了x86内核。英特尔在推动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支持旧模式,因此您可以在x86-64 CPU上运行纯32位OS,并且它仍然是 一个64位CPU。
在运行32位用户空间的64位内核下,CPU处于“兼容”模式,这与32位受保护模式类似,是 lot ,但页表格式具有52位物理地址。 (x86-64页表格式基于PAE页表的36位物理地址宽度。)用户空间很难分辨32位内核与32位内核之间的区别。 64位内核,但特定于OS的东西除外,例如通过系统调用询问内核。
许多项目都使用i386
和x86-64
或amd64
。作为最模糊的建议,这是我的建议。 (或者也许是i686,如果您不太在意与PPro之前的CPU兼容。)
有些东西,例如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 :(得分:2)
有时称为:
注1:严格来说,这是不正确的,因为
x86涵盖了与8086向后兼容的所有CPU以及该体系结构的所有扩展,包括x86-32和x86-64。
尽管如此,这种缩短通常在Windows世界中使用。
注2:不应用于避免与x32 ABI混淆。
来源: