现在的位置: 首页 > 综合 > 正文

linux64位平台移植

2012年12月23日 ⁄ 综合 ⁄ 共 542字 ⁄ 字号 评论关闭

Linux64,最大好处就是内存不在有4GB的限制(32linux只有4G的虚拟地址寻址空间,可以克服这个限制,但是实现起来会比较复杂,得不偿失)。

数据模型

 

ILP32

LP64

LLP64

ILP64

char

8

8

8

8

short

16

16

16

16

int

32

32

32

64

long

32

64

32

64

long long

64

64

64

64

指针

32

64

64

64

Linux64位,使用LP64标准,做代码移植时需要注意一些地方。

Struct或者Union的大小,会随着升级到64位系统,发生改变,特别是边界对齐。原来32位的数据类型,在64位系统上,也许会需要补齐64位;

需要特别注意的地方总结了一下,大概下面几点:

1.       特别注意改变了大小的数据类型:long,指针;

2.       不能像32位系统上,用int来存储指针;

3.       数字常量,需要做改变,比方说0xFFFFFFFF32位机器上如果是long-1,但是在64位会被当成是一个正数,这个需要特殊考虑;

4.       为了更好的代码移植性,有些类型尽量使用linux定义好的平台无关的类型,如size_tptrdiff_tintptr_t

5.       Printf打印指针的参数格式应该为%p32位上%x也可以)。

 

抱歉!评论已关闭.