c к миллиону операций в секунду кодируют в компьютерной организации и архитектуре

int i ;

void set_array(int num){
  int array[10];
  for(i=0;i<10;i++){
    array[i]=compare(num,i){
  }
}

int compare(int a ,int b){
  if(sub(a,b)>=0)
    return 1;
  else
    return 0;
}

int sub(int a,int b){
  return a-b;
}

кто-либо знает, как преобразовать в код миллиона операций в секунду

1
задан JUST MY correct OPINION 9 May 2010 в 06:55
поделиться

1 ответ

Прежде всего, вам нужна шпаргалка: MIPS Instruction Reference

Хороший справочник - самая полезная вещь при написании ассемблера для любой архитектуры.

Во-вторых, начните разбирать программу на высоком уровне. Вы знаете функции и их имена, поэтому начните с этого. Начните с определения функций и создания очень базового определения для каждой функции, чтобы она была действительно вызываемой.

Далее напишите код, который будет извлекать параметры функции из соответствующих мест для каждой функции. Здесь вам повезло, поскольку каждая функция принимает только базовое целое число. Вам нужно будет переместить любые параметры функции в $a0 - $a3 перед вызовом функции. Затем вы можете написать код, перемещающий возвращаемое значение в $v0 или $v1 перед возвратом. Убедитесь, что в каждой написанной вами функции вы сохраняете используемые регистры в стеке, а затем восстанавливаете их перед jal $ra. Теперь у вас должно быть несколько вызываемых функций, которые возвращают значения, но на самом деле ничего не делают.

И наконец, напишите хлам, который делают ваши функции. Опять же, вам повезло, так как вы используете только int... поэтому каждое число будет соответствовать одному регистру, и вам потребуется смещение только на 4 байта при обращении к стеку... что упрощает работу. Я дам вам подсказку для int sub(int a, int b)... это будет выглядеть примерно так:

sub  $t2, $t1, $t0

Хаха, видите? Не так уж и сложно писать на ассемблере :D

Конечно, в конце функции вам придется переместить результат в $v0' или $v1' и вернуться к вызывающей функции.

В любом случае, надеюсь, это поможет вам начать.

2
ответ дан 3 September 2019 в 00:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: