srli
lyszt.net cubre srli y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
srli desplaza los bits a la derecha una cantidad fija y coloca 0s en las posiciones superiores vacantes. Es la forma de cantidad constante de srl, que cubre la mecánica y el relleno de ceros. La i significa inmediato, una constante codificada en la instrucción.
La forma de srli aparece a continuación, donde amount es un número fijo de 0 a 31.
srli rd, rs1, amount
Un desplazamiento a la derecha divide un número a la mitad una vez por cada posición desplazada, y el relleno de ceros trata el valor como nunca negativo, por lo que srli divide un número sin signo entre una potencia de dos sin resto. La siguiente línea divide t0 entre cuatro.
srli t0, t0, 2
Combinado con un AND de enmascaramiento, srli extrae un campo de un valor empaquetado. Desplaza el campo hacia abajo hasta la parte inferior y luego aplica andi para conservar solo sus bits. Leer el segundo byte de una palabra requiere un desplazamiento a la derecha de 8 y un AND con 0xff.
El manual de RISC-V codifica los desplazamientos constantes como una especialización del formato de tipo I, uno de los diseños de instrucción estándar. La cantidad de desplazamiento ocupa los 5 bits inferiores del campo inmediato, y el bit 30 de la instrucción distingue los dos desplazamientos a la derecha. srli realiza un desplazamiento lógico a la derecha, y entran 0s en los bits superiores.
srli siempre rellena con 0s. Eso conviene a patrones de bits sin procesar y a números que nunca son negativos. En un valor con signo que puede ser negativo, los 0s sobrescriben el marcador de signo. La división con signo entre una potencia de dos usa srai. La elección entre ambos refleja cómo lees los bits del registro.
Ejemplo
li t0, -8 srli t1, t0, 1 # t1 = 2147483644 (zero-filled)
