¿Cómo accedo al estado de los bits individuales de una palabra en MIPS?
-
09-09-2019 - |
Pregunta
Estoy escribiendo un programa y necesito para determinar si se establecen los bits 3 y 6. Yo sé que puedo girar una palabra o izquierda / derecha desplazarlo.
Pero, ¿cómo puedo acceder estado de bit individual? Cómo se utiliza un operador de bits similares y / XOR?
Solución
Se podría hacer un bit a bit y con 0x08 y 0x40 (bit 0 es suponiendo que el bit de orden más bajo). Se podría utilizar la instrucción andi para hacer esto.
Si $ t0 es el valor que desea probar:
andi $t1, $t0, 0x08
andi $t2, $t0, 0x40
$ t1 será distinto de cero si el bit 3 se fija, $ t2 será distinto de cero si el bit 6 se establece.
Otros consejos
Sí, operadores de bits son lo que usa. Usted puede y con una máscara de bits que tiene solamente los bits 3 y 6 conjunto. A continuación, hacer una comparación a cero.
algo así (no he hecho ensamblador en mucho tiempo):
and r2, r1, 0x48 # r2 = r1 & 0x48
cmp r2, 0x48
jz zzzzzz #jmp to zzzzz if bits 6 and 3 are set
Una técnica para la prueba de un solo bit en el montaje MIPS es cambiar el bit deseado en la posición más significativo de bits y utilizar BLTZ / bgez para probar el estado del bit. Esto ahorra una instrucción en los casos en que la instrucción andi no se puede utilizar para seleccionar el bit deseado.