Я пытаюсь работать над своим школьным проектом, но у меня возникают трудности с переводом вложенных функций из c в mips. Я не совсем понимаю, какие переменные будут выбраны внутренней функцией get New, поэтому мне нужно сохранить их в стеке.Так, в примере у меня есть эта функция, мне нужно перевести:
, какие переменные мне нужно сохранить в стеке при переводе этой функции, так как есть другая функция, которая называется get New внутри.Я знаю, что get New будет уничтожать адрес возврата $ ra, поэтому мне нужно наверняка сохранить $ ra в стеке.Как насчет ptr X, ptr Y и аргументов?как я узнаю, какие из них будут уничтожены при получении New?
int moveRobots(int *arg0, int *arg1, int arg2, int arg3)
{
int i, *ptrX, *ptrY, alive = 1;
ptrX = arg0;
ptrY = arg1;
for (i=0;i<4;i++) {
*ptrX = getNew(*ptrX,arg2);
*ptrY = getNew(*ptrY,arg3);
if ((*ptrX == arg2) && (*ptrY == arg3)) {
alive = 0;
break;
}
ptrX++;
ptrY++;
}
return alive;
}
и вот функция getNew
int getNew(int arg0, int arg1)
{
int temp, result;
temp = arg0 - arg1;
if (temp >= 10)
result = arg0 - 10;
else if (temp > 0)
result = arg0 - 1;
else if (temp == 0)
result = arg0;
else if (temp > -10)
result = arg0 + 1;
else if (temp <= -10)
result = arg0 + 10;
return result;
}