srl
lyszt.net cubre srl y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
srl mueve bits a la derecha, lo inverso de lo que hace sll. Las letras significan shift right logical (desplazamiento lógico a la derecha). Esta forma toma los bits de rs1, los mueve a la derecha según el conteo en rs2 y almacena el resultado en rd.
srl rd, rs1, rs2
Cualquier bit desplazado más allá del extremo derecho se pierde, y los 0 rellenan los espacios vacantes a la izquierda.
Ese relleno con ceros explica la palabra logical. Un desplazamiento a la derecha divide a la mitad un valor, así que un desplazamiento de 1 divide entre 2 y un desplazamiento de 3 divide entre 8. El residuo se descarta, igual que en la división entera. srl divide rápidamente un número sin signo entre una potencia de dos.
Existen dos instrucciones de desplazamiento a la derecha, y la diferencia está en lo que se coloca en los bits altos vaciados. srl pone 0s allí. Su contraparte sra copia el bit de signo en esas posiciones, lo que preserva el signo de los números negativos. Elige srl para un patrón de bits sin procesar o un valor que no pueda ser negativo. En un valor con signo que pueda ser negativo, srl produce un número positivo grande, y sra es la instrucción correcta en ese caso.
Según el manual de RISC-V, el conteo de desplazamiento ocupa los 5 bits bajos del registro rs2. Esos 5 bits abarcan de 0 a 31 posiciones, por lo que los bits restantes de rs2 se ignoran. El manual llama a srl un desplazamiento lógico a la derecha, que inserta ceros en la parte superior.
Cuando el conteo de desplazamiento es una constante, usa la forma inmediata srli.
Ejemplo
li t0, -8 li t1, 1 srl t2, t0, t1 # t2 = 2147483644 (zero-filled)
