32位 与 64 位 区别 : CPU 操作系统 应用程序

https://www.cnblogs.com/mlgjb/p/8385658.html   原文链接

1.64位CPU与32位CPU

这两者的指令集合、操作数位数、寄存器名称和个数等等都不相同。

一、比如一条mov eax,1指令,可能在32bCPU上对应的机器指令是0x1201;在64位机器上就是0x123401。

二、64位CPU里的寄存器是64位的,这样CPU每次处理的数据量也就更大,32位CPU寄存器是32位的。

三、64位CPU里的寄存器数量也多于32位CPU。

四、32位CPU的地址总线不一定是32位的,还有可能是48位的,同样64位的CPU地址总线也不一定是64位,往往都是48位。

五、现在对于主流的处理器,64位的CPU是能够兼容32位指令架构的!!!!!!

 

2.32位的操作系统与64位的操作系统

32位的操作系统是专门为32位CPU设计的,同样64位的操作系统是为64位的CPU设计的。

前面也说了,64位的CPU能够兼容32位指令架构,因此在64位CPU上也可以安装32位操作系统。

 

32位的win7可以支持4G的逻辑地址空间,但其中用户能够分到的只有大约是3G多,还有一部分是分给系统内核了,64位的win系统,理论上寻址范围能够达到264。在这里多说一句,操作系统负责逻辑地址到物理地址的映射,因此32位的操作系统只能利用最大4G的物理内存,注意点大家需要注意。

 

 

3.32位应用程序与64位的应用程序

32位的程序就是将源码用32位的编译器编译的,64位的程序就是将源码用64位的编译器编译的。

 

应用程序只接触逻辑地址,并不接触真实的物理地址。

32位的程序理论上可以申请利用4GB的地址空间,64位的程序则可以申请利用大于4GB 的地址空间,这也是64位程序的一个巨大优势。

 

我们知道应用程序的运行是需要操作系统作为支撑的,这些程序在运行时常常需要进行一些系统调用,还有各种库函数等。

这些可执行文件能否顺利运行有着两个最重要的地方。

1)动态链接库。
2)系统API。

 

对于Windows系统而言,64位的系统往往具有32位系统的库,因此在64位系统上能够运行32位的程序,但是反过来就不行了,因为32位系统一般没有64位系统的库。

 

32位升级到64位不是简单的重新编译发布一下就可以了。举个例子,在32位C语言环境里一个指针可以放入一个int型的变量中,但在64位里就不行了了,因为64位程序里的指针为64位,这样的话程序肯定就爆了,因此对于某些程序如果想要升级到64位,则需要修改源码,这个工作是相当繁琐的。

 

总结

1.32位CPU只能安装32位的操作系统,而32位操作系统只能运行32位的程序。

2.64位CPU可以运行32位或者64位的操作系统,64位操作系统可以运行32位或64位程序。

3.64位版本的程序占用的内存空间更大,因为它的指针是64位的,但同时它又可以申请更多的逻辑地址空间。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值