xor
lyszt.net aborda xor e outras instruções RISC-V com mais detalhes.
Formato de codificação
Descrição
xor é uma instrução bit a bit. Assim como and e or, ela opera sobre as 32 posições de um registrador (a página and cobre operações bit a bit). O nome significa OR exclusivo. Em cada posição, o resultado é 1 quando os dois bits de entrada diferem, um 0 e um 1, e 0 quando são iguais. A forma abaixo aplica isso a rs1 e rs2 e escreve o resultado em rd.
xor rd, rs1, rs2
Duas propriedades tornam o XOR útil. Um valor submetido a XOR consigo mesmo resulta em 0, já que cada bit corresponde a si próprio, então a linha seguinte zera um registrador.
xor t0, t0, t0
XOR com uma máscara inverte os bits onde a máscara tem um 1 e deixa os demais inalterados. Inverter duas vezes restaura o valor original. Criptografia simples e verificações de erro dependem disso.
XOR também testa igualdade. Após a linha abaixo, t2 é zero quando as duas entradas eram idênticas e diferente de zero quando diferem, e um desvio pode testar o resultado.
xor t2, t0, t1
O manual do RISC-V lista xor entre as operações registrador-registrador, que leem rs1 e rs2 e escrevem o resultado em rd. Ela realiza um OR exclusivo lógico bit a bit.
O exemplo zera t0 para 0, independentemente do que ele continha antes. A instrução li (load immediate) com a constante zero faz o mesmo.
Exemplo
xor t0, t0, t0 # t0 = 0
