文件大小变化的原因:
1. 指针
所有编程语言里,到处都在使用指针或者类似的东西(比如对象、引用等等)。
在32位环境里,指针是32位的,在64位环境里,指针是64位的,绝大多数程序里,指针的使用范围很广。
2. 汇编指令
64位指令比32位指令要长一些,比如立即数的长度会由32变成64(00112233变成0000000000112233),并且有时候需要有特定前缀修饰(REX Prefix)
为什么软件都分32和64位?
其实可以不分的,分的原因有两种:
一种原因是开发者懒,有很多方法能把32和64位软件打包到一起,比如你说的游戏。当然游戏也有分开发布的,打成一个安装包,运行的时候有32和64两个版本可选。
另一种原因是打包到一起会太大,尤其是软件本身是一种平台的话(比如office、VS等支持开发功能的软件),内部的库就分32和64两套,全打包起来的话尺寸基本上要翻倍,而这里的东西可能用户能用上的只有一半。
基本上因为以上两条,有些软件就分32和64单独发布了。