MSP430内存对齐问题

这两天仔细研究了下FAT32,发现里面涉及到了一个大端、小端对齐有点意思,这里也简单总结一下。先在这里说明一下,MSP430是小端对齐的,还有FAT32文件系统中存放字段的顺序也是小端模式,所以用MSP430来实现FAT32文件系统的话,读取数据的时候不需要做特殊处理~

下面简单讲一下大端对齐和小端对齐。

我们知道,我们定义变量的时候,在内存中会给该变量分配一个位置,如果该变量是一个char型的变量,那么只会分配给它一个字节的位置,但是如果该变量int型或者long int型呢?这里以16位的C编译器编译结果来看的话,int型占2个字节,long int型占4个字节,那具体是如何分配呢?我们以0x12345678这个4字节数据为例。

如果在内存中,按地址从低往高,存储是4个字节的数据依次是0x78,0x56,0x34,0x12的话,则为小端存储,如下图所示;

如果在内存中,按地址从低往高,存储的4个字节的数据依次是0x12,0x34,0x56,0x78的话,则为大端存储如下图所示;

不同的CPU,对齐方式不同,所以如果我们在移植程序时,涉及到这种多个字节拼凑成多个字节的数据出问题时,可以考虑是否是内存对齐方式的问题。

永不止步步 发表于12-06 09:41 浏览65199次
分享到:

已有0条评论

暂时还没有回复哟,快来抢沙发吧

添加一条新评论

只有登录用户才能评论,请先登录注册哦!

话题作者

永不止步步
金币:67410个|学分:302217个
立即注册
畅学电子网,带你进入电子开发学习世界
专业电子工程技术学习交流社区,加入畅学一起充电加油吧!

x

畅学电子网订阅号