VS配置管理器中不同平台的关系
在VS的配置管理器中,有一个平台的选择,里面有x86、x64、ARM、Win32等选项。一直以来很头疼这几个东西,只大概地知道x86是开发32位程序,x64是开发64位程序,仅此而已……这一次较全面地、小小地了解一下这几个选项背后的含义,简单说明一下,以作记录。(仅是小白入门水平,权做大致了解,如有错漏,感谢指正!)
下面进入正文。
一、64位时代之前的Intel
1978年,Intel发布了8086处理器。这是Intel第一台16位计算处理器,也是x86架构的鼻祖。几年后再发布了80286处理器,也是16位的,依旧采用x86架构。截止此时,x86架构是16位计算的,并不是目前(2020年)所广泛采用的32位计算标准。
1985年,Intel发布80386处理器,这个处理器直接在原来16位的x86架构上进行扩展,成了目前的所广泛应用的32位的x86标准原始版本。在几年后发布的80486处理器也是基于此32位架构。这时的x86架构为了与16位计算时代的进行区分,也叫做x86-32;又因为是这技术是Intel自家开发出来的,Intel内部也叫它IA-32。
到这里就能看出,x86实质上是这一系列80x86处理器的指代,这里的x不应该理解为乘号的意思,而应该是中文的“某”的含义。那按这趋势,Intel下一个发布的产品应该是80586?然而由于专利等原因,不适宜采用纯数字去做专利申请,因此Intel产品开始以Pentium为系列名,开始了“奔腾”时代。截止到Intel的64位处理器出来之前,这一系列的32位PC处理器架构,其实都是沿用了32位x86架构,本质上与80386是同辈关系,源于父辈8086的16位架构的扩展。
二、64位时代之前的AMD
AMD跟Intel渊源颇深,既是明面上的合作伙伴,也是暗地里的死对头,想往死里整的那种……
AMD一开始靠复刻(逆向)Intel的80x86赚了不少钱,后来直接买Intel的x86专利授权,自己开发处理器。因此在AMD的32位处理器中,其实跟Intel的32位处理器一样,都属于x86-32的衍生品。
小结:在64位处理器商业化之前,x86-32基本上是PC领域的标准了,不管是Intel还是AMD,推出的处理器都是32位的x86架构。因此,在2020年的现在来看,“x86”基本上就是“32位”的代名词,一想到x86,必想到32位CPU。
三、64位时代来了!
Intel与AMD在32位处理器上缠斗多年,你来我往,怎么打破这僵局呢?64位处理器是破局所在!
Intel为了趁机在64位处理器开发中彻底甩掉AMD这个包袱,不给它利用x86架构的机会,于是和惠普一起从头开始搞了个新的64位架构,叫做IA-64,做成安腾处理器。所以,这里的IA-64就是个全新的、原生的64位架构,与以前Intel产品线上所采用的x86-32毫无关联,属于一个全新的产品。可惜的是,这个架构因为各种缺陷,没被主流市场接受,在现在的PC领域基本见不到安腾处理器的身影。
另一方面,AMD也学着以前x86由16位扩展成32位的做法,将x86-32由32位扩展成了64位,这就成了现在所用的x64架构。AMD把它叫做AMD64,并在64位时代开始之时借此狠狠打击了Intel。Intel自身的IA-64不被市场看好,自己的x86-32也打不过人家,被迫接受了AMD的64位技术,再修修改改包装成自己的64位架构技术,自己叫它Intel 64。因此目前的PC市场上,流行的都是由x86-32扩展而成的x86-64架构处理器,平常简称x64。
小结:Intel想摆脱x86的框架,开发了一个完全不同于x86的IA-64架构,但是收效甚微,最终不得不接受了AMD基于x86-32扩展出来的x86-64技术。因此截止2020年,x64指的就是由x86-32发展而来的64位计算处理器架构
四、ARM一枝独秀
ARM公司一直都是只研发设计、不生产CPU。它自己的架构就叫做ARM,广泛用于移动设备(因为发热量比Intel/AMD的芯片小很多),与x86以及IA-64完全不兼容。
至此大概能分辨出VS配置管理器的x86、x64、ARM。x86特指了Intel、AMD生产的x86-32处理器,x64则是Intel、AMD生产的x86-64处理器;再简单点说,开发Intel/AMD的32位程序就选x86,开发Intel/AMD的64位程序就选x64,开发用于ARM处理器的程序就选ARM。
还有一个Win32,指的是用于搭载32位Windows操作设备的程序。这些设备包括但不限于Windows笔记本、平板、手机。不管这些设备用的是Intel还是AMD还是ARM的CPU,只要它是32位Windows系统,都能包容。
最后附上MSDN上一个比较明晰的问答:https://social.msdn.microsoft.com/Forums/vstudio/en-US/6a9f7e3a-9ec3-491a-9804-15b2c194d336/solution-platform-x86-vs-win32?forum=vcgeneral