srli
lyszt.net aborda srli e outras instruções RISC-V com mais detalhes.
Formato de codificação
Descrição
srli desloca bits para a direita por uma quantidade fixa e coloca 0s nas posições superiores vagas. É a forma de quantidade constante de srl, que cobre a mecânica e o preenchimento com zeros. O i significa imediato, uma constante codificada na instrução.
A forma de srli aparece abaixo, onde amount é um número fixo de 0 a 31.
srli rd, rs1, amount
Um deslocamento à direita divide um número pela metade uma vez para cada posição deslocada, e o preenchimento com zeros trata o valor como nunca negativo, então srli divide um número sem sinal por uma potência de dois sem resto. A próxima linha divide t0 por quatro.
srli t0, t0, 2
Combinado com um AND de mascaramento, srli extrai um campo de um valor empacotado. Desloque o campo para baixo, depois aplique andi para manter apenas seus bits. Ler o segundo byte de uma palavra requer um deslocamento à direita de 8 e um AND com 0xff.
O manual RISC-V codifica deslocamentos constantes como uma especialização do formato tipo I, um dos layouts de instrução padrão. A quantidade de deslocamento ocupa os 5 bits inferiores do campo imediato, e o bit 30 da instrução distingue os dois deslocamentos à direita. srli realiza um deslocamento à direita lógico, e 0s entram nos bits superiores.
srli sempre preenche com 0s. Isso serve para padrões de bits brutos e números que nunca são negativos. Em um valor com sinal que pode ser negativo, os 0s sobrescrevem o marcador de sinal. A divisão com sinal por uma potência de dois usa srai. A escolha entre os dois reflete como você lê os bits do registrador.
Exemplo
li t0, -8 srli t1, t0, 1 # t1 = 2147483644 (zero-filled)
