xori
lyszt.net cubre xori y otras instrucciones RISC-V con más detalle.
Formato de codificación
Descripción
xori realiza una XOR bit a bit con una constante. Junto con andi y ori, completa las instrucciones lógicas con inmediato. La i significa inmediato: un valor fijo codificado en la instrucción, por lo que no se necesita un segundo registro. XOR da 1 en una posición de bit cuando los dos bits difieren (véase la página xor). Dada una máscara constante, un 1 en la máscara invierte el bit correspondiente y un 0 deja ese bit sin cambios.
La sintaxis de xori aparece a continuación. Aplica XOR al valor de rs1 con la constante imm y escribe el resultado en rd.
xori rd, rs1, imm
andi borra bits seleccionados, ori los establece y xori los invierte. Invertir dos veces devuelve el valor original.
xori también proporciona la instrucción not. Invertir todos los bits de un valor significa aplicar XOR con una máscara de todo 1s, y not es una forma abreviada de la línea siguiente, porque -1 en bits es todo 1s. RISC-V no tiene una instrucción dedicada que invierta todos los bits.
xori rd, rs, -1
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 que la constante -1 se convierte en una máscara de todo 1s. Enumera xori con la constante -1 como la inversión lógica bit a bit de un registro, que es la pseudoinstrucción not.
Un uso pequeño común alterna un valor de sí o no almacenado como 0 o 1. La siguiente línea lo cambia al otro estado cada vez que se ejecuta.
xori t0, t0, 1
La constante está limitada a 12 bits. Para patrones más amplios, cargue la máscara en un registro y use xor.
Ejemplo
li t0, 0 xori t1, t0, -1 # t1 = -1 (every bit flipped)
