Vorrei porre una domanda riguardo questo codice
slt $t3, $s5, $zero
bne $t3, $zero, Exit
slt $t3, $s5, $t2
beq $t3, $zero, Exit
add $t1, $s5, $s5
add $t1, $t1, $t1
add $t1, $t1, $t4
lw $t0, 0($t1)
jr $t0
L0: add $s0, $s3, $s4; j Exit
L1: add $s0, $s1, $s2; j Exit
L2: sub $s0, $s1, $s2; j Exit
L3: sub $s0, $s3, $s4; j Exit
Exit: ……..
Dove f? $s0, g? $s1, h? $s2, i? $s3, j? $s4, k? $s5, 4? $t2, indirizzo tabella? $t4
che come sapete corrisponde a questo
switch(k)
case 0 f=i+j;break;
case 1 f=g+h;break;
case 2 f=g-h;break;
case 3 f=i-j;break;
La domanda è la seguente: Perchè non si può supporre che nel registro $t4 al posto di contenere l'indirizzo della tabella dei salti non contenga direttamente l'indirizzo dell'etichetta che contiene l'istruzione da eseguire?
Ciò permetterebbe di saltare un istruzione che sarebbe la seguente
lw $t0, 0($t1)
in quanto in $t1 abbiamo l'indirizzo diretto dell'etichetta. A questo punto l'istruzione che segue sarebbe cosi modificata
jr $t1
Spero di essere stato chiaro
Grazie in anticipo per le eventuali risposte.