for循环占用指令周期的影响因素:
1.单片机的指令集合,指令所花费的时间周期
2.循环变量的数据类型,所占字节数越大,所占指令周期也就越大
3.循环体完成的工作
以avr单片机为例对于循环代码
for(i=0;i<4;i++);
对应汇编指令如下:
for(i=0;i<1;i++)
0000 ; i -> R16,R17
0000 ; for(i=0;i<4;i++);
00000027 clr R16
00021127 clr R17
0004 L2:
0004 .dbline 4
0004 L3:
0004 .dbline 4
00040F5F subi R16,255 ; offset = 1
00061F4F sbci R17,255
0008 .dbline 4
00080430 cpi R16,4
000AE0E0 ldi R30,0
000C1E07 cpc R17,R30
000ED4F3 brlt L2
开始循环前变量i初始化占用两个指令周期,每次变量i的累加占用两个指令周期。跳转命令的判断占用三个指令周期,跳转命令占用两个指令周期。
所以每次循环占用七个指令周期。