Alignment异常官方的意思是非字节对齐导致。
做了一个实验,发现并没有异常
以PPC为例
char buf = (char )malloc(100);
int buf1 = (int )(buf + 3);
* buf1 = 0x55aa55aa;
反汇编也没有发现异常。
查了一下 ppc e500mc系列的手册描述如下几种指令非4字节对齐会导致错误:
浮点运算指令;
乘法指令;
内存同步指令;
cache锁存指令
一种场景是 一个buffer地址从硬件获取之后(地址没有对齐),然后进程内存同步该地址异常。异常的数据放在DEAR寄存群里面。
一个ARM数据访问异常反汇编定位的案例
ARM Linux内核驱动异常定位方法分析–反汇编方式
http://blog.csdn.net/zhangchiytu/article/details/8297271