|
arm9 2440,ADS下裸机调试。
在调试的程序总遇到这样一个结构体,各个变量后边的注释是我打印的地址。
typedef struct {
BOOL a; // 0x33FF576C
WORD b; // 0x33FF5770
UINT8 c; // 0x33FF5774
WORD d; // 0x33FF5776
ADDRESS e; // 0x33FF5778
BOOL f; // 0x33FF5780
WORD g; // 0x33FF5782
BOOL h; // 0x33FF5784
UINT8 i; // 0x33FF5785
UINT8 g; // 0x33FF5786
UINT8 k; // 0x33FF5787
} P;
sizeof(P)=28
对数据对齐有一点了解,明白为什么这个结构体的size是28字节。
想问一下:对于0x33FF5776、0x33FF5785、0x33FF5787这类不是4的倍数的地址,CPU能不能访问到?如果在程序里面访问到这些变量(也就是访问到了这一类地址了吧),会给程序带来什么样的影响?
需不需要把结构体中每一个变量的地址都强制在以0、4、8、c结尾的地址上?
|
|