当一个较少字节对齐类型的指针强转为一个较多字节对齐的指针类型时,这样有些时候会产生问题。
在arm的平台上,这个问题比较明显,在x86平台上运行后没这个问题typdef struct{int addr;int rdda;}Test_t;int
main(){short int a;short ...
分类:
其他好文 时间:
2014-06-07 03:40:59
阅读次数:
301
#pragma pack (n) /*指定按n字节对齐*/ 不写这句默认n =8
设真正的对齐长度为m字节
如果n>结构体中数据类型(包括类类型)长度最大的数据类型长度,m = 结构体中最大数据类型长度
否则 m = n
总之,真正的对齐长度m为指定对齐长度n与结构体中最大类型长度中的较小值。
规则:
1. 结构体变量的首地址能够被m所整除;
2. 结构体每个...
分类:
其他好文 时间:
2014-05-11 13:32:36
阅读次数:
299
由于一字节的对齐问题,我调一个库调了我基本一个下午.....犯错其实并不可怕,可怕的是你一犯再犯......这也算得上是难能可贵.../Zp (Struct
Member Alignment)Visual Studio 2013Other VersionsThis topic has not yet...
分类:
其他好文 时间:
2014-05-09 09:40:28
阅读次数:
306
1、Thumb指令访问R0-R7,Thumb-2访问所有寄存器。
2、满栈向下增长
PUSH {R0} ; *(--R13) = R0
POP {R0} ; R0 = *R13++
四个字节对齐,也就是地址是0x4,0x8 等。
3、
main
BL fun
fun
BX LR
4、写入到PC也就是R15的数值必须是奇数,不然会企图进入ARM模式...
分类:
其他好文 时间:
2014-05-07 06:08:21
阅读次数:
287
Cortex-M3有以下特点:
1、32位内核
2、哈佛结构
3、大小端模式
4、可选的MPU
5、Thumb可以访问R0-R7,Thumb-2可以访问所有寄存器。
6、R13有两个,MSP和PSP,堆栈指针的最后两位为0,堆栈是4字节对齐。
7、R14存储子程序的返回地址。多于一级的,就保存到堆栈中。
8、
异常
特权级
用户级
异常handler...
分类:
其他好文 时间:
2014-05-07 03:21:37
阅读次数:
214
字节对齐详解(32位系统),其他位系统类似。...
分类:
其他好文 时间:
2014-04-29 13:46:20
阅读次数:
252