![深度探索嵌入式操作系统:从零开始设计、架构和开发](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=1739269008-VZRMjQPlTnR38duKiK3Fn1OG5ERMErKH-0-751f1ca8ecb80a29bcdecc32f60476f3)
图3-3 字节数据存储
然后来看一个16位的半字数据:“0xEEFF”怎么存放在内存中的。因为数据有了2个字节,放在内存中也要占用2个字节。因此有两种情况,如图3-4所示。
![](https://epubservercos.yuewen.com/BC0E45/3590877203666601/epubprivate/OEBPS/Images/3a4-i.jpg?sign=1739269008-JTCUEVEPSh39PTWdKDOslpdqVQZHBcLZ-0-6eba62e84d0ec2684403c7f1ac47e3db)
图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=1739269008-MhTP1BQO5V0vfFiqaCqYMqp3yT79lX6k-0-12e00ffe6092b0dd08f84d9b5355a781)
图3-5 字数据存储
和前述一样,还是有两种情况分别是数据的最高有效位放在内存的高地址字节中,或者数据最高有效位放在内存的低地址字节中。
人们常说,某某处理器是大端或者小端的。表示的就是上面的这些情况。
□小端模式:数据的最高有效位放在内存的高地址字节中。
□大端模式:数据的最高有效位放在内存的低地址字节中。
ARM920T CPU既支持小端模式也支持大端模式。这是通过CP15协处理器控制的,后面会介绍怎么对它进行编程,达到这一目的。