新手上路
- 积分
- 43
- 金钱
- 43
- 注册时间
- 2016-10-22
- 在线时间
- 11 小时
|
本帖最后由 7682297ab 于 2016-12-25 01:54 编辑
numShow[0]=CMD_tmp[2]; //Before !!!!
res=(*(u8(*)(u32))cmd_device.funs[id].function)(U32DATA.x); // SUPER BUG!!! after (u8(*)(u32)) ,the RAM value shifted
numShow[1]=CMD_tmp[2]; //After !!! RAM VALUE shifting,total changed
1.第二步中没有对CMD_tmp做任何变化,
2.结果到第三步时CMD_tmp的值发生了偏移,把CMD_tmp-8 .... CMD_tmp-1 整片移入CMD_tmp。CMD_tmp原本的值也相应偏移了
以下为补充的信息
union{
u8 c[4];
u32 x;
}U32DATA;
U32DATA.c[3]=CMD_tmp[4];
U32DATA.c[2]=CMD_tmp[5];
U32DATA.c[1]=CMD_tmp[6];
U32DATA.c[0]=CMD_tmp[7];
|
|