ARM存储方法
ARM体系结构将存储器看做是从零地址开始的字节的线性组合。从零字节到三字节放置第一个存储的字数据,从第四个字节到第七个字节放置的是第二个存储的字数据,依次排列。作为32位微处理器,ARM体系结构所支持的最大寻址空间为4GB。
ARM体系结构可用两种方法存储字数据,称之为大端格式和小端格式,具体说明如下:
1. 大端格式
在大端格式中,字数据的高字节存储在低地址中,而字数据的低字节存储在高地址中,如下图所示:
31 24 23 16 15 8 7 0
8 |
9 |
10 |
1 |
|
4 |
5 |
6 |
7 |
|
0 |
1 |
2 |
3 |
1. 小端模式
与大端存储格式相反,在小端存储格式中,字数据的低字节存储在高地址中,而字数据的高字节存储在低地址中,如下图所示:
31 24 23 16 15 8 7 0
11 |
10 |
9 |
8 |
7 |
6 |
5 |
4 |
3 |
2 |
1 |
0 |
今天在做LOGO的时候,看S3C2440Display.cpp函数中,突然遇见一个函数:
if(dwStatus == ERROR_SUCCESS && dwType == REG_DWORD)
{
dwSize = sizeof(DWORD);
dwStatus = RegQueryValueEx(hkDisplay, _T("LCDVirtualFrameBase"), NULL, &dwType, (LPBYTE) &gdwLCDVirtualFrameBase, &dwSize);
}
不懂,呵呵,没有办法,谁让我不会的太多了,底子又薄,还好我脸皮比较厚,查看MSDN的过程中,发现函数的原型:
LONG RegQueryValueEx(
HKEY hKey,
LPCWSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
其中lpType,参数的取值可能为REG_DWORD_BIG_ENDIAN或者REG_DWORD_LITTLE_ENDIAN得时候就会涉及到ARM存储的方法,于是我又翻书。在ARM嵌入式常用模块与综合系统设计实例精讲这本书的第一章就有介绍!哎哎,汗!