本帖最后由 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];
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>