linux64位平台移植

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也可以)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值