ori
lyszt.net aborda ori e outras instruções RISC-V com mais detalhes.
Formato de codificação
Descrição
ori realiza um OR bit a bit com uma constante. Sua relação com or corresponde à de andi com and. O i significa imediato, um valor fixo codificado na instrução. ori faz OR de um registrador com essa constante em vez de fazer OR de dois registradores. A regra do OR não muda. Uma posição de bit no resultado é 1 quando qualquer um dos bits ali é 1, então a constante define os bits que você escolher. A página or cobre a operação.
A forma de ori aparece abaixo. Ela faz OR do valor em rs1 com a constante imm e escreve o resultado em rd.
ori rd, rs1, imm
O OR define bits e deixa o restante como estava, então ori liga flags específicas quando você sabe quais quer. A linha seguinte liga o terceiro bit a partir da direita em t0 e deixa todos os outros bits inalterados. O prefixo 0b marca uma constante binária.
ori t0, t0, 0b100
Registradores de configuração, flags de permissão e palavras de status contêm bits independentes de ligado e desligado, e ori liga os escolhidos em uma única instrução sem registrador de máscara.
O manual do RISC-V afirma que o imediato de 12 bits é estendido com sinal para 32 bits antes da operação. Uma constante negativa, portanto, tem todos os seus bits superiores definidos, e ori com -1 define todos os bits do resultado.
A constante é limitada a 12 bits, como em andi e addi. Para definir bits fora desse intervalo, carregue a máscara mais ampla em um registrador com li e use or.
Exemplo
li t0, 0 ori t1, t0, 0xf # t1 = 0xf
