深入理解64-bit(三)

1.3    64-bit”相关因素

64-bit”甚至“128-bit”,在实际应用中,这些概念究竟和什么相关?

试想,假如拿一个32位的操作系统在64-bit的硬件上运行,是否可以?

是否我们编译好一个windows程序,就可以在任何windows操作系统上运行?

Java吹的“一次编译,到处运行”是否真如其所言,如是,这个又是什么道理?

其实,“64-bit”这个概念是架构在硬件的CPU基础上的。而与其密不可分的,能有效体现“64-bit”和“32-bit”不同的,是硬件之上的软件。所以,与“64-bit”相关的,无非是这两大类。只是软件要适应硬件、发挥硬件潜能,还要依赖编译器这一特殊软件把高级语言代码转换为机器级别的ISAinstruction-set architecture,指令集体系结构)所认可的机器命令。

在之前,我们讲解了数据模型,不同bit位数的CPU支持的数据类型不完全相同,为了更好发挥机器的物理特性,我们编写程序的时候,就要利用这些更多bit位的CPU,这就给程序员带来一个问题,如何写“64-bit”的代码,或如何把“32-bit”的代码移植到“64-bit”的机器上来?

1.3.1        硬件

通常,“64-bit”首先指的是硬件,在硬件中,主要指的是“64-bit”的CPU。只有硬件提供了基础设施,软件才能有效架构在硬件之上。“64-bit”的CPU首先需要有“64-bit”的寄存器存在与“64-bit”的CPU

目前,主流的“64-bit”的产品有AMDx-64位的CPU,也有IntelIA-64位的CPU

1.3.2        操作系统

仅仅有了硬件是不够的,“64-bit”硬件效能的发挥,依赖操作系统,也依赖于程序员编写的代码中是否有64-bit”位的数据类型的使用[1]

操作系统是程序员写出的代码编译后的产品,如果操作系统代码中定义的数据类型还是“32-bit”硬件所支持的数据类型,则这样的操作系统虽然能够在“64-bit”机器上运行,但是不能很好地把机器潜在的优势发挥出来。所以,需要有与“64-bit”机器配套的“64-bit”操作系统,即需要在操作系统代码中,使用“64-bit”的数据类型来扩大想要表示的数据或空间范围。

用户的应用程序也是这个道理,要想获得更好的性能,那么应该应用“64-bit”的数据类型、“64-bit”的指针表示更大的寻址空间。

 

现在,许多操作系统都发布了64位版本,用以支持“64-bit”的CPU;许多硬件配件商也发布了诸多的64位驱动程序,用以支持“64-bit”模式下硬件的使用。

如微软发布了windows xp 64-bit版本,Linux的诸多版本都支持64-bit硬件。

1.3.3        操作系统与应用软件

64-bit”的应用能在“64-bit”的操作系统上运行。可是,“32-bit”的应用能否在“64-bit”的操作系统上运行?

在软件开发过程中,兼容性是一个提得很多的词。向后兼容[2]是计算机界的一个共识。所以,“64-bit”的操作系统需要能够支持“32-bit”的应运程序运行。比如,微软在“64-bit”机器上提供了WOW64[3],一个容性环境,它使得 32 位应用程序能够在 Windows 64 位操作系统上运行,但应用软件的计算、管理能力还处于32-bit”水平



[1] 这表现在是否有64-bit长度的指针和数值型数据被使用。64-bit长度的指针可表示更大的空间范围,64-bit长度的数据可表示更大的数值范围,这样,管理、计算能力就会增强。

[2] 兼容话题:数据兼容,文件格式兼容,程序兼容等等。

[3] Windows 32-bit On Windows 64-bit. WOW64 launches and runs 32-bit applications seamlessly. The system isolates 32-bit applications from 64-bit applications, which includes preventing file and registry collisions. Console, GUI, and service applications are supported. The system provides interoperability across the 32/64 boundary for scenarios such as cut and paste and COM. However, 32-bit processes cannot load 64-bit DLLs, and 64-bit processes cannot load 32-bit DLLs.――摘自MSDN

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值