for循环1:
语句点灯;
for(i=0;i<100000;i++)
{}
语句关灯;语句1到语句2之间的for循环有意义吗?会被直接解释为:
语句点灯;
语句关灯;
吗?
条件判断没有实际意义只是会在编译的时候有用,真正的可执行程序是不会管这句判断的。因为它不是语句。
我这样理解对吗?for循环2
语句点灯;
for(i=0;i<100000;i++)
{;}
语句关灯;会被直接解释为:
语句点灯;
nop;
nop;
.
.
.
.
(100000)nop;
语句关灯;
吗?for循环3
语句点灯;
while(!j)
for(i=0;i<100000;i++)
{if(j)
break; }
语句关灯;
j的值有外部中断给赋值为1
语句点灯;
for(i=0;i<100000;i++)
{}
语句关灯;语句1到语句2之间的for循环有意义吗?会被直接解释为:
语句点灯;
语句关灯;
吗?
条件判断没有实际意义只是会在编译的时候有用,真正的可执行程序是不会管这句判断的。因为它不是语句。
我这样理解对吗?for循环2
语句点灯;
for(i=0;i<100000;i++)
{;}
语句关灯;会被直接解释为:
语句点灯;
nop;
nop;
.
.
.
.
(100000)nop;
语句关灯;
吗?for循环3
语句点灯;
while(!j)
for(i=0;i<100000;i++)
{if(j)
break; }
语句关灯;
j的值有外部中断给赋值为1
{}
通过这条语句来进行延时,编译后这条语句是有意义的。
用汇编来解释的话,这条语句至少可以解析成:
1条mov指令,
100000条cmp指令,
100000条inc指令;
(由于有的指令有寄存器限制可能有更多条指令)
所以执行的时候还是会占用一定时间,达到延时作用。