Si je veux charger une valeur à partir d'une mémoire qui adresse de base est à $ a0 et off set t2 $, pourquoi je ne peux pas faire ce qui suit:MIPS mot de charge syntaxe
lw $s2, $a1($t2)
Quelle est donc la équivalent de l'expression ci-dessus?
Si je veux charger une valeur à partir d'une mémoire qui adresse de base est à $ a0 et off set t2 $, pourquoi je ne peux pas faire ce qui suit:MIPS mot de charge syntaxe
lw $s2, $a1($t2)
Quelle est donc la équivalent de l'expression ci-dessus?
Vous ne pouvez pas faire cela parce qu'il n'y a pas d'encodage d'instruction MIPS qui supporte une telle chose. Vous devez faire l'ajout vous:
add $a2, $a1, $t2
lw $s2, 0($a2)
L'encodage d'instructions lw
ressemble à ceci:
1000 11ss ssst tttt iiii iiii iiii iiii
Où sssss
est le numéro de registre source, ttttt
est le numéro de registre de destination et iiiiiiiiiiiiiiii
est l'immédiat . Il n'y a pas de place dans cet encodage (et pas d'encodages d'instructions alternatifs) qui utilisent deux registres pour générer l'adresse mémoire. L'instruction de machine spécifique qui s'encodée de l'exemple ci-dessus est:
1000 1100 1101 0010 0000 0000 0000 0000
Depuis l'immédiat est 0
, $s2
est registre 18
et $a2
est registre 6
.
j'aime mips ... si simple – Polaris878
@ Polaris878, Yay pour RISC! –