![深度探索嵌入式操作系统:从零开始设计、架构和开发](https://wfqqreader-1252317822.image.myqcloud.com/cover/641/747641/b_747641.jpg)
上QQ阅读APP看书,第一时间看更新
3.3.2 ARM920T存储器格式
要运行程序就得把程序指令和一些数据存放在存储器中,这个存储器大多数情况下是内存(即SDRAM芯片),下面我们就认识这里的存储器(即内存),如数据在内存中是怎么存放的,有些什么方式,这都是问题。
先来看看一个字节数据:“0xFF”怎么存放在内存中的。假如数据都是从内存地址0开始存放的。因为内存可以寻址的最小单位是1字节,而数据也只有1个字节,因此只有一种情况,如图3-3所示。
![](https://epubservercos.yuewen.com/BC0E45/3590877203666601/epubprivate/OEBPS/Images/3a3-i.jpg?sign=1738985916-ssbTOSfBZtDsDXirgok2zdIKusJera2O-0-ce0ff97d3312cc60f96a5f0e0b2ad9d0)
图3-3 字节数据存储
然后来看一个16位的半字数据:“0xEEFF”怎么存放在内存中的。因为数据有了2个字节,放在内存中也要占用2个字节。因此有两种情况,如图3-4所示。
![](https://epubservercos.yuewen.com/BC0E45/3590877203666601/epubprivate/OEBPS/Images/3a4-i.jpg?sign=1738985916-hAvFnobYYod5znaCi8yeyB9nS3NbhhwZ-0-6ef39c92ea76f5f6a151482c6319b80d)
图3-4 半字数据存储
图3-4中,一种情况是半字数据“0xEEFF”的最高有效位放在内存的高地址字节中。第二种情况是半字数据“0xEEFF”的最高有效位放在内存的低地址字节中。
最后来看一个32位的字数据:“0xCCDDEEFF”怎么存放在内存中的。因为数据有了4个字节,放在内存中也要占用4个字节。因此还是有至少两种情况,如图3-5所示。
![](https://epubservercos.yuewen.com/BC0E45/3590877203666601/epubprivate/OEBPS/Images/3a5-i.jpg?sign=1738985916-k1AvoURjwImwy9W0UIi5PEqGTltSeVqP-0-7655630c776f94f7492305f71443c156)
图3-5 字数据存储
和前述一样,还是有两种情况分别是数据的最高有效位放在内存的高地址字节中,或者数据最高有效位放在内存的低地址字节中。
人们常说,某某处理器是大端或者小端的。表示的就是上面的这些情况。
□小端模式:数据的最高有效位放在内存的高地址字节中。
□大端模式:数据的最高有效位放在内存的低地址字节中。
ARM920T CPU既支持小端模式也支持大端模式。这是通过CP15协处理器控制的,后面会介绍怎么对它进行编程,达到这一目的。