[MIPS] Problème d'exécution et conversion
J'ai un problème dans un programe C. Je veux le convertir en langage d'assemblage MIPS.
Voici le programme :
Code:
1 2 3 4 5 6 7 8 9 10 11 12
| int *ecangeligne (int *matrix, int s, int t, int m)
{
int i;
int tmp;
for (i=0 ; i<m ; i++)
{
tmp=matrix[s*m+i];
matrix[s*m+i]=matrix[t*m+i];
matrix[t*m+i]=tmp;
}
return (matrix);
} |
J'ai les questions suivantes :
Citation:
i) Ecrire le corps de la boucle de cette fonction en supposant que :
- Le registre $5 contient l'adresse du premier élément de la ligne s
- Le registre $6 contient l'adresse du premier élément de la ligne t
- Le registre $7 contient le nombre de colonnes m
- Le registre $8 contient la valeur de i
On utilisera éventuellement les registres $9, $10 et $11 pour les valeurs intermédiaires.
ii) Ecrire les instructions qui permettent d'initialiser les registres $5 et $6 à partir des paramètres de la fonction.
iii) Ecrire le prologue de la fonction.
iv) Ecrire l'épilogue de la fonction.
Pouvez-vous m'aider à trouver une solution à ce programme ? ????