ori
lyszt.net cubre ori y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
ori realiza una OR bit a bit con una constante. Su relación con or es la misma que la de andi con and. La i significa inmediato, un valor fijo codificado en la instrucción. ori aplica OR a un registro con esa constante en lugar de aplicar OR a dos registros. La regla de OR no cambia. Una posición de bit en el resultado es 1 cuando cualquiera de los bits allí es 1, por lo que la constante establece los bits que elijas. La página de or cubre la operación.
La forma de ori aparece a continuación. Aplica OR al valor en rs1 con la constante imm y escribe el resultado en rd.
ori rd, rs1, imm
OR establece bits y deja el resto como estaban, por lo que ori activa flags específicos cuando sabes cuáles quieres. La siguiente línea activa el tercer bit desde la derecha en t0 y deja todos los demás bits sin cambios. El prefijo 0b marca una constante binaria.
ori t0, t0, 0b100
Los registros de configuración, los flags de permisos y las palabras de estado contienen bits de activado y desactivado independientes, y ori activa los elegidos en una sola instrucción sin registro de máscara.
El manual de RISC-V indica que el inmediato de 12 bits se extiende con signo a 32 bits antes de la operación. Por lo tanto, una constante negativa tiene todos sus bits superiores establecidos, y ori con -1 establece todos los bits del resultado.
La constante está limitada a 12 bits, al igual que con andi y addi. Para establecer bits fuera de ese rango, carga la máscara más amplia en un registro con li y usa or.
Ejemplo
li t0, 0 ori t1, t0, 0xf # t1 = 0xf
