lo stack viene usato quando i paramentri si gestiscono direttamente tramite la memoria giusto? spero di si.
inoltre, chi mi sa dire xkè e quando si usa il frame pointer??
ora posto dei pezzi di codice, con relative soluzioni che ho già svolte...mi sapreste dire il xkè?
xkè usiamo il fp?
# void carica_mat(int m[][10], int *r, int *c)
# {
# int i, k;
# printf("Inserisci il numero di righe");
# scanf("%d",r);
# printf("Inserisci il numero di colonne");
# scanf("%d",c);
# printf("Inserisci la matrice\n");
# for(i=0;i <*r;i++)
# for(k=0;k<*c;k+++)
# scanf("%d",&m[i][j]);
# }
N.B: per la funzione carica_mat lo scambio dei parametri con il programma chiamante avvenga attraverso lo stack;
carica_mat:
addi $sp, $sp, -16
sw $s0, 0 ($sp)
sw $s1, 4 ($sp)
sw $s2, 8 ($sp)
sw $fp, 12 ($sp)
addi $fp, $sp, 16
lw $s0, 0($fp) #&m[10][10]=s0
lw $s1, 4($fp) #&r=s1
lw $s2, 8($fp) #&c=s2
inoltre xke nelle funzioni usiamo sempre:
addi $sp, $sp, -n
sw $s0, 0 ($sp)
sw $s1, 4 ($sp)
sw $s2, 8 ($sp)
....
sw $s5, n-1 ($sp) ?
come faccio a capire quanti registri usare? dovrei metttere tanti registri quanti sono i miei paramentri o quante sono le mie variabili + i paramentri?
su quest altra funzione ckè si usa sempre lo stack quando poi nn è richiesto dalla traccia?:
xkè usiamo i registri fino a S3? e xke si usa lo stack?
# void INVERTI (char str[])
# {
# int i, len;
# for(i=0; str[i]!='\0'; i++)
# len++;
# for(i=0; i# {
# scambia(str[i], str[len-i-1]);
# }
# }
N.B= per la funz "inverti" lo scambio dei parametri con il programma chiamante avvenga attraverso i registri in modo che l'indirizzo base della stringa str sia associato a $a;
inverti:
addi $sp, $sp, -20
sw $ra, 0($sp)
sw $s0, 4($sp)
sw $s1, 8($sp)
sw $s2, 12($sp)
sw $s3, 16($sp)
add $s0, $a0, $0
guardando altri esercizi, noto che l'inizio del programma viene effettuato sempre ttramite lo stack..xkè?
inoltre il registro "ra" xke viene usato? xke c'è una chiamata a funzione all interno della funz? o viene usato sempre quando usiamo lo stak o xkè abbiamo una procedura? scusatemi se sto dicendo sciokkezze, ma non c'ho capito tnt bene
spero che qualcuno mi risolva il probl, facendomi capire un po... lunedi c'è l'esame