3.3.2 ARM920T存储器格式

要运行程序就得把程序指令和一些数据存放在存储器中,这个存储器大多数情况下是内存(即SDRAM芯片),下面我们就认识这里的存储器(即内存),如数据在内存中是怎么存放的,有些什么方式,这都是问题。

先来看看一个字节数据:“0xFF”怎么存放在内存中的。假如数据都是从内存地址0开始存放的。因为内存可以寻址的最小单位是1字节,而数据也只有1个字节,因此只有一种情况,如图3-3所示。

图3-3 字节数据存储

然后来看一个16位的半字数据:“0xEEFF”怎么存放在内存中的。因为数据有了2个字节,放在内存中也要占用2个字节。因此有两种情况,如图3-4所示。

图3-4 半字数据存储

图3-4中,一种情况是半字数据“0xEEFF”的最高有效位放在内存的高地址字节中。第二种情况是半字数据“0xEEFF”的最高有效位放在内存的低地址字节中。

最后来看一个32位的字数据:“0xCCDDEEFF”怎么存放在内存中的。因为数据有了4个字节,放在内存中也要占用4个字节。因此还是有至少两种情况,如图3-5所示。

图3-5 字数据存储

和前述一样,还是有两种情况分别是数据的最高有效位放在内存的高地址字节中,或者数据最高有效位放在内存的低地址字节中。

人们常说,某某处理器是大端或者小端的。表示的就是上面的这些情况。

□小端模式:数据的最高有效位放在内存的高地址字节中。

□大端模式:数据的最高有效位放在内存的低地址字节中。

ARM920T CPU既支持小端模式也支持大端模式。这是通过CP15协处理器控制的,后面会介绍怎么对它进行编程,达到这一目的。