gpt4 book ai didi

x86 - 引用 x86 相关 CPU 的 32 位和 64 位版本程序的最正确方法是什么?

转载 作者:行者123 更新时间:2023-12-01 23:04:41 25 4
gpt4 key购买 nike

这个问题是关于 32 位与 64 位 x86 的术语。

如果我有 2 个包含同一程序源代码的目录 - 一个用于 32 位 Windows,另一个用于 64 位 Windows,这些文件夹的更正确名称是什么:

  • x86-64 x64 ?
  • IA-32 x64 ?

  • 我已经阅读了一些网络资源,但无法理解。仅作记录:
  • https://superuser.com/questions/179919/x86-vs-x64-why-is-32-bit-called-x86
  • Difference between x86, x32, and x64 architectures?
  • https://en.wikipedia.org/wiki/X86
  • https://en.wikipedia.org/wiki/IA-32
  • https://en.wikipedia.org/wiki/X86-64
  • 最佳答案

    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位)可以调用

  • IA-32(英特尔有时使用)
  • i386 或 i686(Linux 上常见)
  • (仅限 Windows):x86 .是的,真的:在 Windows 世界中,“x86”特指 32 位。这就是为什么你有一个 Program Files (x86)具有该名称的目录。这种选择会给每个人带来潜在的术语混淆,因为到目前为止,与 ARM 或 MIPS 相比,“x86”仍然是指代总体架构的最佳方式。
  • 很少:x86-32。我所知道的任何硬件或软件供应商都没有正式使用它,但它是一个明确的有用术语。

  • 永远不要称它为 x32。 x32 是 x86-64 System V ABI 的 ILP32 变体:64 位模式下的 32 位指针。 https://en.wikipedia.org/wiki/X32_ABI

    64 位 x86 更容易具体引用(不包括 32 位和 16 位):
  • x86-64 或 x86_64(破折号与下划线根本不重要。在文本中大多数人使用破折号,但在大多数语言中,只有 _ 可以是函数/变量名称的一部分。)
  • AMD64 或 AMD64
  • (仅限 Windows)x64
  • IA-32e 或 Intel64(主要仅在 Intel CPU 架构文档中记录了 Intel 的 x86-64 实现,这些并不流行,我还没有在软件目录名称或配置选项中看到它们)。显然,“e”代表“扩展”。 https://en.wikipedia.org/wiki/X86-64#Intel_64 有一个提到命名的历史部分。有very minor differences在 x86-64 的 Intel 和 AMD 实现之间,主要只影响内核,而不影响用户空间。

  • 不是 IA-64,那是一个单独的架构。
    当然,如果你想学究气,x86-64 CPU 需要支持 legacy 模式,所以你可以在 x86-64 CPU 上运行纯 32 位操作系统,它仍然是 64 位 CPU。
    对于运行 32 位用户空间的 64 位内核,CPU 处于“兼容”模式,这很像 32 位保护模式,只是页表格式具有 52 位物理地址。 (超过 PAE 页表中的 36 位物理地址宽度,x86-64 页表格式所基于。)用户空间很难区分在 32 位内核下运行与在 32 位内核下运行之间的区别。一个 64 位内核,除了特定于操作系统的东西,比如通过系统调用询问内核。

    软件目录名称
    许多项目与 i386x86-64amd64 .这将是我最不模糊的建议。 (或者如果你真的不关心与 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,但这通常只是在源文件中。)

    关于x86 - 引用 x86 相关 CPU 的 32 位和 64 位版本程序的最正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53364320/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com