Domanda

Il seguente codice utilizzato per implementare l'istruzione

sllv $s0, $s1, $s2

che utilizza meno significativi 5 bit del valore nel registro $ s2 per specificare la quantità registro $ s1 dovrebbe essere spostato a sinistra:

          .data
   mask:  .word  0xfffff83f
          .text
  start:  lw     $t0, mask
          lw     $s0, shifter
          and    $s0,$s0,$t0
          andi   $s2,$s2,0x1f
          sll    $s2,$s2,6
          or     $s0,$s0,$s2
          sw     $s0, shifter
shifter:  sll    $s0,$s1,0

So cosa la maggior parte di tali istruzioni stanno facendo.

Non però a capire come la seconda parola carico sta caricando qualcosa da shifter che è essa stessa un'istruzione e non una parola.

Anche il valore della maschera in esadecimale una volta convertito in binario non ha zeri in meno 5 luoghi significativi come la questione dice così io non sono sicuro di come sarà mascherare meno 5 posti sig.

È stato utile?

Soluzione

Questo è il genere di un modo rotonda di farlo. In realtà è la modifica del istruzioni in memoria per eseguire lo spostamento! Se si segue il codice, vedrete che l'istruzione sll $s0,$s1,0 viene caricato, ha il suo campo sa modificato da 0 a $s2 e quindi salvato di nuovo in memoria ed eseguito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top