一条C语言指令运行的时间是多少

来源:百度知道 编辑:UC知道 时间:2024/06/10 22:57:10
程序1:
Void delay1ms(word count)
{word i,j;
for(i=0;i<count;i++)
for(j=0;j<120;j++)
;
}
程序2:
Void delay1ms(word count)
{word j;
while(count--!=0)
{for(j=0;j<72;j++)
;
}
}
这两个程序都是延时1ms*count,为什么for程序设置为120,而while程序设置成72,望分析之,谢谢。

可能是while比for慢吧。

编译后,反汇编出来看就晓得了。用for更简洁,这是第一个函数的反汇编:
22: for(i=0;i<count;i++)
C:0x0D7E E4 CLR A
C:0x0D7F FE MOV R6,A
C:0x0D80 EE MOV A,R6
C:0x0D81 C3 CLR C
C:0x0D82 9F SUBB A,R7
C:0x0D83 500A JNC C:0D8F
23: for(j=0;j<120;j++)
24: ;
C:0x0D85 E4 CLR A
C:0x0D86 FD MOV R5,A
C:0x0D87 0D INC R5
C:0x0D88 ED MOV A,R5
C:0x0D89 B478FB CJNE A,#0x78,C:0D87
C:0x0D8C 0E INC R6
C:0x0D8D 80F1 SJMP C:0D80
25: }

一条C语言指令运行的时间是多少
取决于你用哪条指令, 会被编译成多少机器指令, 还有. 你的编译优化级别也有关系