|
keic运行是碰到非常古怪的问题,一个变量同时可以等于不同的值
[复制链接]
执行的时候碰到很怪的情况,一个变量同时会等于两个不同的值
这段c代码,期间没有发生中断,index是局部变量
if (index == 4)
{
index = 4;
}
if (index == 6)
{
index = 6;
}
结果执行的时候两个分支都执行到了!index先被赋值4,然后又被赋值6
(我是单步调的,中间没有执行其它任何代码)
看了编译出来的汇编代码:
C:0x0818 E557 MOV A,0x57
C:0x081A B40403 CJNE A,#0x04,C:0820
296: {
297: index = 4;
C:0x081D 755704 MOV 0x57,#0x04
298: }
299: if (index == 6)
298: }
299: if (index == 6)
C:0x0820 E557 MOV A,0x57
C:0x0822 B40603 CJNE A,#0x06,C:0828
300: {
301: index = 6;
C:0x0825 755706 MOV 0x57,#0x06
302: }
303: if (ad_result > param_leak[0])
C:0x0828 D3 SETB C
两条CJNE语句都没有跳转。。也就是在0x57没有被改变的情况下
判断它等于4和6都成立……
|
|