为什么linux上以64位模式构建的可执行文件显示机器类型为AMD x86 64?

Sha*_*316 2 linux makefile elf

我在尝试理解ELF(可执行文件和链接格式)时遇到了这个问题.

我遵循的步骤

  1. 写了一个简单的应用程序. main.cint main(int argc, char **argv){ return 0;}
  2. 使用gcc在linux环境下编译.(完成英特尔笔记本电脑)最简单的命令可能 gcc main.c
  3. 现在,当我跑步时a.out,它运行没有任何问题.所以构建很好.
  4. 我使用readelf工具检索ELF信息,在机器字段中放置Advanced Micro Devices X86-64.这部分困惑了我.

所以我检查了文件头a.out,它是按照ELF-64规范(Value 64 - EM_X86_64).

有人会关心解释,为什么在linux上以64位模式构建的可执行文件显示机器类型为AMD x86 64

Dav*_*rtz 7

AMD推出时,x86_64平台被称为AMD64平台.最初,英特尔支持它还远未明朗.

你注意到i386不复存在多久后,很多软件都有架构标签i386?这是因为i386 CPU引入了软件使用的指令集.同样,AMD引入了程序使用的指令集,因此它有一个体系结构标记,反映了支持其指令集的第一个CPU.(现代32位代码仍经常被标记i686为大约1995年的Pentium Pro.)