打印
[ZLG-ARM]

ARM内存中数据是如何放置的?

[复制链接]
1394|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
cbqcgq|  楼主 | 2008-4-2 21:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我在程序中定义了一个数据结构类型,并用此类型定义了一个数据结构,如下:
    typedef struct
    {
      //同步ID
      INT8U  ID_COM0;
      INT8U  ID_COM1;
      INT8U  ID_COM2;
      INT8U  ID_COM3;
      //版本号           
      INT8U  EDIT_ID1;
      INT8U  EDIT_ID2;
      INT8U  EDIT_ID3;
    }ID_SET;
    ID_SET Id;
仿真运行时发现定义的Id的地址为奇地址,0x0c007867;
对于ARM来讲,当选择ARM模式或者THUMB模式,小端对齐,选择16位的SDRAM,那么给变量分配地址时,这个变量的地址是任意形式的还是位数一定为0?
我的理解是:
a,ARM是32位系统,如果选择ARM模式,小端对齐,指令地址最后两位必须是00;
b,如果存储器选择16位,那么给变量(包括全局变量)分配的地址单元是偶地址。例如:INT8U tmp;那么这个tmp所在的内存单元可能是0x0c00_1200,但是不可能是0x0c00_1201.

请高人指点!

相关帖子

沙发
lyl831015| | 2008-4-4 14:04 | 只看该作者

你的理解是对的

数据的存储都是字对齐的。

使用特权

评论回复
板凳
zlgarm| | 2008-4-8 09:39 | 只看该作者

TO cbqcgq

cbqcgq您好:
    ARM处理器支持对齐存放的半字或字数据的存取:以能被4整除的地址开始连续的4个字节构成一个字,特征是Bit1=0,Bit0=0;从偶数地址开始连续的2个字节构成一个半字,特征是Bit0=0。ARM指令的长度是一个字,Thumb指令的长度是半个字。
By zlgarm_glh

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

10

主题

53

帖子

1

粉丝