or
lyszt.net aborda or e outras instruções RISC-V com mais detalhes.
Formato de codificação
Descrição
or é uma instrução bit a bit, então ela opera nos 32 bits de um registrador de forma independente (a página and explica isso). Em uma posição de bit, o resultado é 1 se qualquer bit de entrada for 1 ou se ambos forem. O resultado é 0 apenas quando ambas as entradas são 0. A forma abaixo aplica isso a todas as 32 posições de rs1 e rs2 e escreve o resultado em rd.
or rd, rs1, rs2
OR define bits. Para ligar um bit e deixar os outros como estavam, faça OR do valor com uma máscara que tenha 1 apenas naquela posição. Configurações e flags empacotadas em um único registrador são ligadas dessa forma.
OR também mescla valores. Quando dois valores são deslocados para posições que não se sobrepõem, um único OR os combina em um único registrador. Valores separados de vermelho, verde e azul se combinam em uma única cor da mesma forma.
O manual do RISC-V lista or entre as operações registrador-registrador. Ela lê os registradores de origem rs1 e rs2, realiza um OR lógico bit a bit e escreve o resultado no registrador de destino rd.
OR só pode definir bits para 1. Limpar um bit requer AND com uma máscara, e inverter um bit requer XOR. ori é a versão que faz OR de um registrador com uma constante fixa.
Exemplo
li t0, 0b1100 li t1, 0b0011 or t2, t0, t1 # t2 = 0b1111
