32位程序移植到64位的要点

32位程序移植到64位的要点,第1张

特别针对c/c++阐述,32位和64位源码级的不同,归根结底,就是机器字(设计指针的宽度)的位宽变化了,因此:

1、一些基本类型位宽变化了,还有一山铅些类型位宽不确定,比如说int,相信99%的32位编译器(未作统计)都将int视为32位有符号型旅滑,但在64位编译器上,这点是不确定的,ms的编译器,int型都还是32位有符号整型,但印象中存在某个平台的gcc编译器将int位宽增加到64位。诸如此拆唯腊类,需要特别注意

2、强制类型转换代码需特别注意,特别是c开发人员,对于指针和整型的理解已炉火纯青,借由整型空间存储指针的方法是很常用的(也是很方便的),由于强制转换代码的存在,编译器并不会提示诸如64位到32位转换中可能的信息损失,这也就导致了运行时可能的问题爆发。这一点需要特别注意,严查代码各处的强制转换。

3、模块间调用,严格说这一点还是由位宽变化导致的,做法还是需要筛查类型是否匹配的问题

随便想来,就上述三条逐一考察解决,应该就没太多问题了,如有疏漏,还望担待

当然可以,如果硬件不冲慎睁突,移植很简单,只要改项目里的芯片型号就行了,如果原项目里宽清岁用的硬件新芯片没有,就比较麻烦了,需要删除相关功能。反正,从小芯片往正哪大芯片好弄。大芯片往小芯片要困难些,如果硬件差别太大,可能相关功能就实现不了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8251599.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存