Я написал простой MIPS для кода цикла, и я хочу подсчитать количество выполненных инструкций, и я хочу знать, как подсчитать количество выполненных инструкций в цикле MIPS для.Код выглядит следующим образом:
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:
Соответствующий цикл for в C:
for(int i = 0; i < 4; i++)
{
i++;
}
Мы узнали, что для подсчета количества выполненных инструкций мы предполагаем, что код выполнил nшрифт Times.Вы добавляете 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. </p>
Дополнительно я подсчитываю количество выполненных команд длядля цикла в C, но не в MIPS.Моя идея состояла в том, что количество выполненных инструкций не будет отличаться между двумя программами.
Я все еще не уверен на 100%, прав ли я или полностью понял тему.