potete aiutarmi a capire se ho fatto bene o è sbagliato???
[attachment=0]inverti.txt
la traccia è:2. La seguente funzione in codice C prende come parametri d'ingresso la stringa str[] e la inverte. La funzione fa uso di un’altra funzione C che prende come parametri d’ingresso due puntatori a carattere e scambia il contenuto delle variabili da esse puntato.
[codice-c:n7vcfyqy]void inverti(char str[])
{
int i;
int len=0;
char tmp;
for(i=0; str[i]!='\0'; i++)
len++;
for(i=0; i
{
scambia(&str[i], &str[len-1-i]);
}
}
void scambia(char *a, char *
{
char tmp;
tmp = *a;
*a = *b;
*b = tmp;
}[/codice-c]
Si traducano queste funzioni in codice assembler del processore MIPS, supponendo che:
• le variabili siano allocate in memoria;
• per la funzione 'inverti' lo scambio dei parametri con il programma chiamante avvenga attraverso i registri in modo che l'indirizzo base della stringa str sia associato ad $a0;
• per la funzione 'scambia' lo scambio dei parametri con il programma chiamante avvenga attraverso lo stack.
Allego il file con la mia soluzione...