我有这段代码,我想计算完成for cycle
需要多少条指令
while(1)
{
// some instructions
for (int i = 0; i < 107; i++)
{
// some code
LATEbits.LATE2 = 1;
}
// other instructions
}
这是反汇编列表
... some instructions
109: for (int i = 0; i < 107; i++)
654E 0E00 MOVLW 0x0
6550 0100 MOVLB 0x0
6552 6FD8 MOVWF 0xD8, BANKED
6554 0E00 MOVLW 0x0
6556 6FD7 MOVWF i, BANKED
6558 0100 MOVLB 0x0
655A BFD8 BTFSC 0xD8, 7, BANKED
655C D008 BRA 0x656E
655E 0100 MOVLB 0x0
6560 51D8 MOVF 0xD8, W, BANKED
6562 E10A BNZ 0x6578
6564 0E6B MOVLW 0x6B
6566 0100 MOVLB 0x0
6568 5DD7 SUBWF i, W, BANKED
656A B0D8 BTFSC STATUS, 0, ACCESS
656C D005 BRA 0x6578
6570 0100 MOVLB 0x0
6572 4BD7 INFSNZ i, F, BANKED
6574 2BD8 INCF 0xD8, F, BANKED
6576 D7F0 BRA 0x6558
110: {
111: LATEbits.LATE2 = 1;
656E 848D BSF LATE, 2, ACCESS
112:
113: }
... other instructions
我的理解是,在第一个周期执行从0x654E
到0x655C
的指令。在0x655C
,有一个无条件分支,将我置于for cycle
0x656E
。在完成该指令后,如果没有其他分支BRA
将代码放回循环的开头,代码如何保持循环?