将32位代码向64位平台移植
来源:互联网 发布:java类库手册 编辑:程序博客网 时间:2024/04/29 22:54
2015-11-2 16:09:53 周一
将32位代码向64位平台移植,怎么弄?
是不是只要将32位的代码重新编译成64位的二进制可执行文件就行了吗?
32位跟64位程序有什么不一样的?
32位环境涉及”ILP32”数据模型,是因为C数据类型为32位的int、long、指针。而64位环境使用不同的数据模型,此时的long和指针已为64位,故称作”LP64”数据模型。
现今所有64位的类Unix平台均使用LP64数据模型,而64位Windows使用LLP64数据模型,除了指针是64位,其他基本类型都没有变。在此主要探讨ILP32到LP64的移植问题。
c语言数据模型ILP32、LP64的对比:
向64位移植代码时的所有问题差不多都可以总结出一个简单的规律:
不能把int、long、指针的长度一样。如何违反这条规律的代码,当运行在LP64数据模型下时,都会出现不同的问题,而且很难找出原因所在。
char *a[20];char *p = a;int i = (int)p;printf("i = %p, p = %p\n", i, p);
32位移植到64位时,会出现截断的情况。
因此要注意指针类型的使用,尽量类型对应类型的使用,
尽量减少将指针类型强转成int类型之类的,会产生截断。
另外还有其他指针计算时,使用sizeof,尽量使用指针长度用4或8来运算的。
0 0
- 将32位代码向64位平台移植
- 32位平台代码向64位平台移植
- 将32位代码向64位平台移植的注意事项(转)
- 将32位代码向64位平台移植的注意事项
- (转)将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项
- 将32位代码向64位平台移植的注意事项4
- 将32位代码向64位平台移植的注意事项1
- 将32位代码向64位平台移植的注意事项2
- 将32位代码向64位平台移植的注意事项3
- Matlab使用技巧
- bzoj1615 【Usaco2008 Mar】The Loathsome Hay Baler 麻烦的干草打包机
- Jsp状态管理
- 成都市 普通护照、往来港澳通行证、大陆居民往来台湾通行证 办理方法(2015年11月更新)
- oracle学习笔记--SQL语言基础(关键字摘选)
- 将32位代码向64位平台移植
- 动态生成标签和删除
- iOS KVC_KVO_Archiver
- opencv 漫水填充函数 floodFill 说明
- CMOS Sensor Interface(CSI)
- LeetCode---Flatten Binary Tree to Linked List
- 为2016做准备
- 内核oops分析
- Matlab 对视频的读写操作