我写了一个简单的MIPS for循环代码,我想计算已执行指令的数量,我想知道如何计算MIPS for循环中已执行指令的数量。代码如下:
li $s0, 0 ## int i = 0
li $t1, 4 ## max bound = 4
for_loop:
addi $s0, $s0, 1 ## increment int i by 1
beq $s0, $t1, for_loop_done ## i = 4 => terminate
j for_loop ## go back to the
for_loop_done:
C中对应的for循环为:
for(int i = 0; i < 4; i++)
{
i++;
}
我们了解到要计算已执行指令的数量,我们假设代码运行了n次。您添加1进行变量的初始化。然后,您添加for循环主体的指令总和。然后将其添加到n + 1中,以计算i和4。最后,您添加n来计算thr变量的增量。我的理解是,我的特定代码执行的命令数为16,这就是原因。
+1执行的命令-初始化int i。
+5条已执行的命令-因为int i从0开始一直上升到4。
+4个执行的命令-int i递增4倍。
+6条执行的命令-每次对int i和4进行比较,即int i <4。
我还要计算C中for循环的已执行命令数,而不是MIPS。我的想法是,两个程序之间执行指令的数量不会有所不同。
我还是不能百分百确定自己是否正确或是否已经完全理解该主题。