Come posso accedere lo stato dei singoli bit di una parola in MIPS?
-
09-09-2019 - |
Domanda
Sto scrivendo un programma e ho bisogno di determinare se sono impostati i bit 3 e 6. So che posso ruotare una parola o sinistra / destra spostarlo.
Ma come faccio ad accedere lo stato di singoli bit? Devo utilizzare un operatore bit a bit like e / XOR?
Soluzione
Si potrebbe fare un bit a bit e con 0x08 e 0x40 (presumendo bit 0 è il bit di ordine più basso). Si potrebbe utilizzare l'istruzione andi per fare questo.
Se $ t0 è il valore che si desidera verificare:
andi $t1, $t0, 0x08
andi $t2, $t0, 0x40
$ t1 sarà diverso da zero se il bit 3 è impostato, $ t2 sarà diverso da zero se il bit 6 è impostato.
Altri suggerimenti
Sì, operatori bit per bit sono ciò che si utilizza. È possibile e con una maschera di bit che ha solo i bit 3 e 6 set. Poi fare un confronto a zero.
qualcosa di simile (non ho fatto assembler in un lungo periodo di tempo):
and r2, r1, 0x48 # r2 = r1 & 0x48
cmp r2, 0x48
jz zzzzzz #jmp to zzzzz if bits 6 and 3 are set
Una tecnica per testare un singolo bit in MIPS montaggio è quello di spostare il bit desiderato nella posizione più significativo bit e utilizzare BLTZ / BGEZ per verificare lo stato del bit. Ciò consente di risparmiare un'istruzione nei casi in cui l'istruzione andi non può essere utilizzato per selezionare il bit desiderato.