Non riesco a capire come funziona l'istruzione jal nel processore MIPS. Le mie due domande sono:
a) Qual è il valore memorizzato in R31 dopo "JAL": PC + 4 o PC + 8?
b) Se è davvero PC + 8, cosa succede alla istruzione a PC + 4? Viene eseguito prima del salto o non viene mai eseguito?
a Patterson e Hennessy (quarta edizione), pg 113:
"istruzione di salto-e-link: Istruzione che salta e l'indirizzo e contemporaneamente salva l'indirizzo delle seguenti istruzioni in un registro ($ ra in MIPS)"
"program counter (PC ): il registro contenente l'indirizzo dell'istruzione nel programma in esecuzione"
Dopo aver letto queste due affermazioni, ne consegue che il valore sa ved in $ ra dovrebbe essere (PC + 4).
Tuttavia, nei dati di riferimento MIPS (carta verde) che viene fornito con il libro, l'algoritmo di istruzione JAL è definita in questo modo:
"Jump e Link: JAL: J: R [31] = PC + 8 ; PC = JumpAddr "
Questo website afferma anche che 'è davvero PC + 8', ma stranamente, dopo di che si dice che dal momento che il pipelining è un argomento avanzato" si suppone l'indirizzo di ritorno è PC +4 ".
Provengo dall'assemblaggio 8086, quindi sono consapevole che c'è una grande differenza tra il ritorno a un indirizzo e quello successivo, perché i programmi non funzioneranno se assumo solo qualcosa che non è vero. Grazie.
Grazie mille! Stranamente, molti siti Web presentano informazioni errate (PC + 4). – ReimannCL