转载自:https://zhuanlan.zhihu.com/p/113157931 【重新排版补充】
!!! 如有侵权,请联系站长撤回!!!
简而言之
win32 = intel x86 -> 32位程序
x64 = x86-64/AMD64 -> 64位程序
在 64 位的 Windows 系统上,32 位的应用程序也可以运行,但是会以 WoW64 的形式在 64 位系统上运行。
选择 Win32 会生成 32 位的应用程序,而选择 x64 则会生成 64 位的应用程序。选择适当的目标平台取决于项目的需求以及目标用户的操作系统情况。如果不确定,通常建议选择 x64,以充分利用 64 位系统的性能和资源。
开始
有些场景下,我们去安装某种软件 需要选择自己 CPU 的架构情况了。会提供不同操作系统的三种架构, x86 的 32 位架构和 64 位架构,以及 arm 架构。
没有 x32 的说法, x86、x64 都指的是 CPU 的指令集架构。
指令集
所谓指令集,可以理解成硬件对外的接口。我们运行程序是通过操作系统调度,操作系统然后让硬件去计算。
让硬件计算的话,比如一些加法乘法,循环之类的,就需要硬件提供的接口,也就是指令集。这个就是我们常说的机器语言,已经到了计算机的最底层了。
指令集架构主要分两大类。
-
复杂指令集运算(Complex Instruction Set Computing,CISC)
简单的理解就是提供的指令很多,也都很复杂。 -
精简指令集运算(Reduced Instruction Set Computing,RISC)
简单的理解就是提供的指令很少,也都比较简单,只是一些基础的指令。
以 intel 的 x86 架构为代表,主要针对的操作系统是微软的 Windows 和苹果的 maxOS。
另外 Linux,一些 UNIX 等,都可以运行在复杂指令集架构的微处理器。
以 ARM 公司的 arm 架构为代表。当前有 UNIX、Linux 以及包括 iOS、Android、Windows Phone 等在内的大多数移动操作系统运行在精简指令集的处理器上。
复杂指令集和精简指令集比较的话,区别在于我们编程(直接写机器语言代码在 CPU上运行)的时候,比如实现乘法。根据提供的指令,复杂指令集可能一条命令就够了,而简单指令集我们可能需要加法、循环等多条指令。
硬件和软件也就是互补的过程,当硬件提供功能简单了,写软件就复杂些。当硬件提供的功能多了,写软件就简单些。
x86 架构发展
x86 架构于 1978 年推出的 Intel 8086 中央处理器中首度出现,8086 在三年后为 IBM PC 所选用,之后 x86 便成为了个人电脑的标准平台,成为了历来最成功的 CPU 架构。8086 是 16 位处理器,接着一系列的处理器进行了 32 位架构的改进,现在 x86 一般指 32 位的架构。
该系列较早期的处理器名称是以数字来表示 80x86。由于以 86 作为结尾,包括 Intel 8086、80186、80286、80386 以及 80486,因此其架构被称为 x86。
生产 x86 架构的 CPU 除了因特尔,它还把专利授权给了现在比较出名的超微(AMD)。然后在 1999 年 AMD 首次公开 64 位集以扩展 x86,此架构称为 AMD64。后来英特尔也推出了与之兼容的处理器,并命名Intel 64。两者一般被统称为 x86-64 或 x64,开创了 x86 的 64 位时代。
这里会有一个疑问 ,Intel 去哪里了,为什么没有率先做 64 位的?其实 intel 做了,为了不让其他厂商模仿,申请了很多专利,与惠普联合设计了全新的架构 IA-64 ,但最大的问题就是它与之前的 x86 不兼容,且市场反应较冷淡,然后就凉凉了。
苹果公司和 RPM 包管理员以 x86-64 或 x86_64 称呼此 64 位架构。
甲骨文公司及 Microsoft 称之为x64。
BSD 家族及其他 Linux 发行版则使用 amd64,32 位版本则称为i386(或 i486/586/686),
Arch Linux 用x86_64 称呼此 64 位架构。
现在 x86 架构的CPU 的话基本上就是 Intel 和 AMD 两家公司了。
arm 架构发展
arm 架构的话就是 ARM 公司的,这家公司不生产芯片,而是以授权的方式盈利。从诺基亚到苹果手机、安卓手机,奠定了其在智能手机市场的霸主地位。16 年的时候 ARM 公司被日本软银收购了。
现在常听到的高通骁龙系列就是 arm 架构。
linux 中使用命令 uname -a 可以查看 CPU 的架构。
Linux DESKTOP-68NS8J3 3.4.0+ #1 PREEMPT Thu Aug 1 17:06:05 CST 2013 x86_64 x86_64 x86_64 GNU/Linux
总结
CPU 指令集架构目前主要是两大类。
-
复杂指令集是 x86、x64(也叫 x86-64, amd64) 两种架构,专利在 Intel 和 AMD 两家公司手里, 该架构 CPU 主要是 Intel 和 AMD 两家公司,这种 CPU 常用在 PC 机上,包括 Windows,macOS 和 Linux。
-
简单指令集是 arm 一种架构,专利在 ARM 公司手里,该架构 CPU 主要有高通、三星、苹果、华为海思、联发科等公司。这种 CPU 常用在手机上,包括安卓和苹果。
再多说一句,之前也写过 linux 发展的一些历史,就和操作系统一样,我们能设计出一个全新的操作系统,但是各种软件都需要在新的系统上重新开发,软件商愿不愿意就不一定了。
同样的,我们也能设计出一个新的指令集架构,但是还是生态的问题,现在安卓、苹果的操作系统都是在 arm 架构上的,所以你的新指令集架构还需要安卓再适配一个新的操作系统,安卓不愿意的话,你可以自己出一个新的操作系统,但又回到了最初的问题,各种软件也需要重写。
如果兼容之前的指令集架构或者操作系统的话,那可能就绕不开各种专利的问题了。
所以现在各种公司利益都是紧密相连的,合作才能共赢。