关于对 x86 的理解

前言

今天在阅读《Linux C 一站式编程》中这个 x86 汇编程序基础,突然意识到,自己对于 x86 这个概念似乎是十分模糊。然后查看了维基百科和知乎,在这里记录一下。

x86

x86 泛指一系列基于 Intel 8086 且向后兼容的中央处理器指令集架构。最早的 8086 处理器于 1978 年由 Intel 推出,为 16 位微处理器。

该系列较早期的处理器名称是以数字来表示 80x86。由于以“86”作为结尾,包括 Intel 8086、80186、80286、80386 以及 80486,因此其架构被称为“x86”。由于数字并不能作为注册商标,因此 Intel 及其竞争者均在新一代处理器使用可注册的名称,如 Pentium,来描述 x86 架构下的处理器产品。现时英特尔将其称为 IA-32,全名为“Intel Architecture, 32-bit”,一般情形下指代 32 位的架构。

x86-64

x86-64(又称 x64,即英文词 64-bit extended,64 位拓展的简写)是一个处理器的指令集架构,基于 x86 架构的 64 位拓展,向后兼容于 16 位及 32 位的 x86 架构。x64 于 1999 年由 AMD 设计,AMD 首次公开 64 位集以扩展给 x86,称为“AMD64”。其后也为英特尔所采用,现时英特尔称之为“Intel 64”,在之前曾使用过“Clackamas Technology” (CT)、“IA-32e”及“EM64T”。

苹果公司和 RPM 包管理员以“x86-64”或“x86_64”称呼此 64 位架构。甲骨文公司及 Microsoft 称之为“x64”。BSD 家族及其他 Linux 发行版则使用“amd64”,32 位版本则称为“i386”(或 i486/586/686),Arch Linux 用 x86_64 称呼此 64 位架构。

补充

i686

在装 MinGW-w64 的过程中,遇到了一个 i686 架构,关于这个 i686 架构,简单来讲,就是 32 位的架构。更多相关的可以参见 维基百科askubuntu


参考:

1、https://zh.wikipedia.org/wiki/X86 2、https://zh.wikipedia.org/wiki/X86-64