【Hardware】i386、x86和x64的故事
(1)x86的由来
x86架构首度出现在1978年推出的Intel 8086中央处理器,它是从Intel 8008处理器中发展而来的,而8008则是发展自Intel 4004的。在8086之后,Intel又推出了包括80186、80286、80386以及80486。
在设计上,这些后续的处理器使用的指令集都是在8086的基础上添加新支持的指令进行改进的,因此可以说都是向下兼容(backward compatibility)的,即能在8086上运行的程序在80486上也一定能运行。
向下兼容(Downward Compatibility),又称作向后兼容(Backward Compatibility),指在一个程序或者类库更新到较新的版本后,用旧的版本程序创建的文档或系统仍能被正常操作或使用,或在旧版本的类库的基础上开发的程序仍能正常编译运行的情况。例如较高档的计算机或较高版本的软件平台可以运行较为低档计算机或早期的软件平台所开发的程序
由于都是以86结尾(不过8088也是x86),所以把这一系列的指令集,称之为x86指令集(架构)。准确的来讲,x86这一术语并不是指的某一个(具体CPU使用的)具体的指令集,而是在8086(的指令集)基础上发展而来的所有指令集的泛称。
x86与CPU的位数无关,包括16位、32位、64位的CPU。
实际上,在80486以后Intel推出的绝大多数CPU都是x86的,包括Pentium 、Pentium Pro 、Pentium MMX ,Pentium 2 ,还有后面的Pentium 3、Pentium 4 、Pentium D 、Core 全系列,(x86系列的) Xeon。另外,使用x86架构的处理器制造商远非Intel一家,最著名的就是AMD,其他的还有VIA、Cyrix。
(2)x86-32(x86、i386、IA-32)
从1985年80386开始,intel通过对x86架构进行32位的扩展,实现了32位CPU,而之前的都是16位。Intel把支持32位的 x86指令集架构命名为ia-32(Intel Architecture 32bit)。实际上由于32位x86处理器的统治性,术语“x86”几乎等于IA-32,即32位的x86或x86-32,例如 Windows 和 Linux发行版的32位版本命名都是x86(而不是x86-32或IA-32)。后来的“x86-64”名称也继续强化了这种约定方式。
这里还是要强调, x86是一系列架构的泛称,支持16位、32位和64位的指令都有。
(3)x86-64(x64、AMD64)
该来的还是会来,在1999年,AMD宣布了x86-64架构。其实现方式与之前的80386思路一致,继续对IA-32扩展,增加64位通用寄存器、证书预算单元和逻辑操作,支持64位虚地址,向前兼容ia-32。大专栏 【Hardware】i386、x86和x64的故事/p>
2003年第一款x86-64处理器发布,AMD Operon。同时AMD也将x86-64正式命名为AMD64。这下Intel彻底2B了,以前都是AMD小弟追随者Intel大哥的脚步,如今AMD先实现了64位民用桌面级CPU。
其实Intel也有其64位计划,在2004年的IDF上,Intel承认其64 位计划,命名为ia-32e,即ia-32 extension,之后又改成EM64T,Extended Memory 64 Technology,最终命名为Intel64。 实际上EM64T与AMD64几乎相同。早期EM64T不兼容AMD64的少量指令,但是由于AMD在64位技术中的领先地位,Intel2005年不得不宣布将完全兼容AMD64。
所以现在装的64位版本操作系统从没有说是面向Intel还是AMD的。不过在称谓上,大多数厂商还是使用x86-64(x86_64、x64,或者AMD64)来称呼此架构,从而保持中立。
2.关于32和64的说明
(1)操作系统
- 32位的操作系统:32位的操作系统可以运行在32位 or 64位的CPU上。
- 64位的操作系统:只有64位的 CPU 才能运行64位的操作系统,当然现在市面上几乎所有消费级CPU都已经是64位的了。
32位的操作系统只能支持最大4GB的内存。这意味着,如果你安装多于4GB的内存条,那么超过4GB的那部分并不会被操作系统所使用。
(2)应用程序
- 32位的应用程序:32位的应用程序可以运行在32位 or 64位的操作系统上。
- 64位的应用程序:64位的应用程序只能运行在64位的操作系统上。
3.参考
- Wikipedia - x86
- Wikipedia - x64
- What are the differences between 32-bit and 64-bit, and which should I choose?
- i386 different from x86? [closed]
- i386 和 x86-64 有什么区别?
- x86, i386, x86-64, x64, and amd64? Oh My!
- 32bit_and_64bit
【Hardware】i386、x86和x64的故事的更多相关文章
- cmake编译(编译目标)x86或x64
if(CMAKE_CL_64) #CMAKE的内建变量,如果是true,就说明编译器的64位的,自然可以编译64bit的程序 set(ADDRESS_MODEL 64) set(NODE_TAR ...
- cmake构建时指定编译器架构(x86 or x64)
vs2015 x64编译器为例,cmake命令如下: cmake -G "Visual Studio 14 Win64" path\to\source\dir 去掉Win64,就是 ...
- Mixing x86 with x64 code (混合编写x86和x64代码)
几个月前我小小的研究了在WOW64下的32位进程中运行native x64代码. 第二个设想是在64位进程下运行x86代码.它们都是可以的,如我google的一样, 已经有人在使用这两种方法了: ht ...
- X86和X64环境下的基本类型所占用的字节大小
同样的程序代码,使用Visual Studio 进行编译,当目标平台分别为x86或x64环境时,其编译结果是不同的.在x86环境下,指针都是4个字节的:而在x64环境下,指针都是8字节的.测试代码如下 ...
- win32和x86以及x64的区别
本来是知道x86和x64的区别的. 今天突然在VS2008上看到一个win32的选项,一下子懵了,这是什么玩意. 百度之,发现答案 win32是指windows 32位的操作系统,顾名思义是支持32为 ...
- 关于C#编写x86与x64程序的分析
电脑硬件CPU可以分为x86与x64, x86的机器只能安装32位的操作系统,如XP, WIN7_86, x64的机器既可以安装32位的系统,又可以安装64位的系统,只是在x64的机器上安装32位的系 ...
- 使用CefSharp在C#访问网站,支持x86和x64
早已久仰CefSharp大名,今日才得以实践,我其实想用CefSharp来访问网站页面,然后抓取html源代码进行分析,如果使用自带的WebBrowser控件,可能会出现一些不兼容js的错误. Cef ...
- Visual Studio中Debug与Release以及x86、x64、Any CPU的区别
Visual Studio中Debug与Release的区别: 在Visual Studio中,编译模式有2种:Debug与Release.这也是默认的两种方式,在新建一个project的时候,就已经 ...
- VS2012在win7 64位机中x86和x64下基本类型的占用空间大小(转)
VS2012在win7 64位机中x86和x64下基本类型的占用空间大小 #include "stdafx.h" #include <windows.h> int _t ...
随机推荐
- goweb- session和数据存储
session和数据存储 Web开发中一个很重要的议题就是如何做好用户的整个浏览过程的控制,因为HTTP协议是无状态的,所以用户的每一次请求都是无状态的,我们不知道在整个Web操作过程中哪些连接与该用 ...
- 吴裕雄--天生自然 PYTHON3开发学习:CGI编程
<Directory "/var/www/cgi-bin"> AllowOverride None Options +ExecCGI Order allow,deny ...
- c语言中fflush的运用为什么没有效果呢,测试平台linux
/************************************************************************* > File Name: clearing. ...
- py学习笔记1.13、1.14
1.name.title() 首字母大写 name.upper() 全部大写 name.lower() 全部小写 2.+ 合并字符串 3.单引号.双引号都可以表示字符串 4.# 注释 5.索引制定为- ...
- HDU-1540 Tunnel Warfare(区间连续点长度)
http://acm.hdu.edu.cn/showproblem.php?pid=1540 Time Limit: 4000/2000 MS (Java/Others) Memory Limi ...
- 迅为iTOP-3399开发板Ubuntu基本设置
基于迅为iTOP3399开发板虚拟机需要根据用户的实际情况,进行网络设置以及其他一些基本的设置.VMware10.0.1 和 Vmware8.0.3 联网和基本设置类似.下面先详细讲解一下,虚拟机的一 ...
- dao层单元测试报错CONDITIONS EVALUATION REPORT
0 环境 系统:win10 编辑器:IDEA 1 正文 1.1 起因 在controller层测试 测试url时没问题的 但是我单元测试就报错 1.2 排查 因为controller层 springb ...
- 实验报告8 AC+Fit AP组网通过三层网络注册(DHCP Option 43)
实验报告8 课程名称 无线网络与安全技术 实验名称 AC+Fit AP组网通过三层网络注册(DHCP Option 43) 姓名 学号 班级 实 验 目 的 [实验目的] 了解AC+Fit AP跨 ...
- python学习笔记(18)字典和json 的区别 和转换
字典和json 的区别 和转换 前言:字典和json非常像.接下来比较一下两者的异同 先看一下字典的写法: a = {'a':'1', 'b':'2', 'c':'3' } 再看一下json的写法: ...
- git理论知识
1.Git 有三种状态,你的文件可能处于其中之一:已提交(committed).已修改(modified)和已暂存(staged) 由此引入 Git 项目的三个工作区域的概念:Git 仓库.工作目录以 ...