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?

È stato utile?

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.

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