Spiegazione del puntatore del frame

24

Nell'assembly MIPS , esiste un registro per il puntatore dello stack e un altro registro per il puntatore del frame. Qual è il frammento di frame e qual è il suo scopo. In che cosa differisce dal puntatore dello stack?

    
posta qwaserdftyghuijkiii 08.04.2013 - 23:04
fonte

1 risposta

39

Nell'assembly MIPS, il puntatore dello stack punta in cima allo stack. Mentre assegni lo spazio nello stack, il puntatore dello stack ($ sp) si sposta per puntare alla memoria libera.

Quando si chiama una subroutine nell'assembly MIPS (i registri erano un premio in quei giorni - i parametri basati sul registro erano non convenzionali), uno scrive i parametri nello stack e poi avanza il puntatore dello stack.

Quando il metodo inizia, un parametro può essere a un offset di 16($sp) . Tuttavia, quando le variabili vengono posizionate nello stack, il puntatore dello stack si sposta e lo stesso parametro può ora trovarsi al posto di 24($sp) . Questo può rendere il codice un po 'confuso.

Il puntatore del frame ($ fp) punta all'inizio del frame dello stack e non si sposta per la durata della chiamata di subroutine. Questo punta alla base del frame dello stack e i parametri che vengono passati alla subroutine rimangono in una posizione costante rispetto al puntatore del frame.

Comprendi che il puntatore del frame dovrà essere memorizzato e ripristinato con le chiamate di subroutine che lo modificano.

Ulteriori letture:

risposta data 08.04.2013 - 23:24
fonte

Leggi altre domande sui tag