这个问题是关于32位和64位x86的术语的。
如果我有2个目录带有相同程序的源代码-一个目录用于32位Windows,另一个目录用于64位Windows,那么这些文件夹的更正确的名称是:
我已经阅读了一些Web资源,但听不懂。仅作记录:
最佳答案
x86可以是一个广义的术语,涵盖与8086向后兼容的所有CPU,以及包括x86-64在内的所有体系结构扩展。
请注意,IA-64根本不是x86,而是Itanium (a 64-bit VLIW architecture with explicit speculation / parallelism)。它也是由Intel设计的,但是就兼容性或设计而言,它与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位受保护模式非常相似,除了页表格式具有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,例如,但这通常只在源文件中。)