32位程序移植到64位操作系统.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
32位程序移植到64位操作系统

C/C++32位程序移植到64位操作系统 32位平台与64位平台 平台的定义 计算机系统是由硬件与软件两部分组成的。所谓平台也就是指硬件与相应的系统软件 包括操作系统、编译器和与开发环境有关的应用程序 如数据库 。 64位硬件体系结构是指: 1 .能处理64位数据.---即CPU可以将64位数据作为基本单元进行处理 只需一次操作就可处理 ,”字长”是64位的,即存储单元是64位的. 说明:32位平台的存储单元是32位的 这导致结构成员的一种以8字节为边界的填充,即第一个成员即使不足一个8字节的基本存储单元,那么仍占用一个基本存储单元,而整个结构占用的存储空间也是8字节的倍数. 2 .能产生64位地址.----包括有效地址和物理地址.注意:虚地址概念并不是由处理器体系结构说明的,它是由AIX的VMM 虚地址存储管理器 说明的.它规定了应用程序可访问的内存空间的大小.一般来说,虚地址可以与有效地址或物理地址不同. 相应地,32位硬件体系结构是指: 1 .能将32位数据作为基本数据单元进行处理 ; 2 .最多只能产生32位地址 包括有效地址和物理地址 . 下列操作可从64位寄存器中得到好处: 1 .64位长的串; 2 .64位寄存器上的移位操作; 3 .64位的整数和指针运算; 4 .串或大数据的拷贝. 硬件部分主要是指其字长-----CPU能作为基本数据单元处理的二进制数据的位数。如32位机器其CPU能在一条指令内处理32位数据,它不能在一条指令内处理64位数据,它必须将64位数据分为两个32位数据进行处理;而64位机器其CPU则能在一条指令内处理64位数据,它不需象32位机器一样,将64位数据拆分为两个32位数据进行处理。 32位平台是指其硬件体系结构是32位的,而且其操作系统、编译器等系统软也只能支持件也只能支持件32位程序. 64位平台是指其硬件体系结构是64位的,而且其操作系统、编译器等也能支持64位程序.因而,64位平台能充分利用其64位硬件的性能,使得一些应用程序能从中得到性能的改善. 如何识别程序为32位/64位 使用vs2010下的工具Visual Studio x64兼容工具命令提示来检测。在命令行中输入 dumpbin /headers +需检测的exe的绝对路径, 32位程序如下图所示: 64位程序如下图所示: 应用程序移植 数据类型 Data Type LP32 bits LP64 bits char 8 8 short 16 16 int 32 32 long long 64 64 long 32 64 pointer 32 64 3.2 API 在编写32位64位兼容代码时要注意一个问题,有些API只有在64位系统中才存在(虽然目前这种API只大量存在于IA64),所以使用这些API时要注意条件编译(_M_AMD64)。 另外有两个重要的API,IsWow64Process和GetNativeSystemInfo。它们可以帮助32位应用程序来判断是否运行于64位系统(GetSystemInfo在32位进程中只会看到32位系统的功能)。但是在比较早的没有64位版本的系统中(比如Windows 2000),这些API是不存在的。所以使用它们时要用动态加载的方式(LoadLibrary,GetProcAddress),如果加载失败也可以认为运行于32位系统。 .3. 文件系统重定向 为实现WOW,64位Windows中的%windir%\System32文件夹会被重定向。64位进程对System32的引用会访问真实的System32目录,32位进程引用System32会被重定向到其它目录(GetSystemWow64Directory会得到这个目录)。 可以使用Wow64DisableWow64FsRedirection, Wow64EnableWow64FsRedirection, 和Wow64RevertWow64FsRedirection三个函数来打开或者关闭文件系统重定向。例如32位进行可以通过关闭重定向来访问真实System32目录,64位进程可以通过打开重定向来访问System32目录的32位映像。 但是以下一些目录是不会被重定向的: %windir%\system32\catroot %windir%\system32\catroot2 %windir%\system32\drivers\etc %windir%\system32\logfiles %windir%\system32\spool .4. 注册表重定向 与文件系统重定向相似,以下注册表项也会被重定向。 HKEY_LOCAL_MACHINE\Software HKEY_US

文档评论(0)

haocen + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档