Как посчитать количество выполненных инструкций цикла for - PullRequest
0 голосов
/ 03 января 2019

Я написал простой 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%, прав ли я или полностью понял тему.

...