srl
lyszt.net aborda srl e outras instruções RISC-V com mais detalhes.
Formato de codificação
Descrição
srl desloca os bits para a direita, o inverso do que sll faz. As letras significam shift right logical (deslocamento lógico à direita). Esta forma pega os bits de rs1, desloca-os para a direita pela contagem em rs2 e armazena o resultado em rd.
srl rd, rs1, rs2
Quaisquer bits empurrados além da extremidade direita são perdidos, e 0s preenchem os espaços vagos à esquerda.
Esse preenchimento com zeros explica a palavra logical. Um deslocamento à direita divide um valor pela metade, então um deslocamento de 1 divide por 2 e um deslocamento de 3 divide por 8. O resto é descartado, correspondendo à divisão inteira. srl divide um número sem sinal por uma potência de dois rapidamente.
Existem duas instruções de deslocamento à direita, e a diferença está no que vai para os bits altos esvaziados. srl coloca 0s lá. Sua contraparte sra copia o bit de sinal para essas posições, o que preserva o sinal de números negativos. Escolha srl para um padrão de bits bruto ou um valor que não pode ser negativo. Em um valor com sinal que pode ser negativo, srl produz um grande número positivo, e sra é a instrução correta nesse caso.
De acordo com o manual RISC-V, a contagem de deslocamento ocupa os 5 bits baixos do registrador rs2. Esses 5 bits abrangem de 0 a 31 posições, então os bits restantes de rs2 são ignorados. O manual chama srl de deslocamento lógico à direita, que insere zeros no topo.
Quando a contagem de deslocamento é uma constante, use a forma imediata srli.
Exemplo
li t0, -8 li t1, 1 srl t2, t0, t1 # t2 = 2147483644 (zero-filled)
