srli
lyszt.net couvre srli et d'autres instructions RISC-V plus en détail.
Format d'encodage
Description
srli décale les bits vers la droite d'une quantité fixe et place des 0 dans les positions supérieures libérées. C'est la forme à quantité constante de srl, qui couvre la mécanique et le remplissage par des zéros. Le i signifie immédiat, une constante encodée dans l'instruction.
La forme de srli apparaît ci-dessous, où amount est un nombre fixe de 0 à 31.
srli rd, rs1, amount
Un décalage à droite divise un nombre par deux une fois pour chaque position déplacée, et le remplissage par des zéros traite la valeur comme jamais négative, donc srli divise un nombre non signé par une puissance de deux sans reste. La ligne suivante divise t0 par quatre.
srli t0, t0, 2
Combiné à un AND de masquage, srli extrait un champ d'une valeur compactée. Décalez le champ vers le bas, puis appliquez andi pour ne conserver que ses bits. Lire le deuxième octet d'un mot nécessite un décalage à droite de 8 et un AND avec 0xff.
Le manuel RISC-V encode les décalages constants comme une spécialisation du format de type I, l'une des dispositions d'instruction standard. La quantité de décalage occupe les 5 bits inférieurs du champ immédiat, et le bit 30 de l'instruction distingue les deux décalages à droite. srli effectue un décalage à droite logique, et des 0 entrent dans les bits supérieurs.
srli remplit toujours avec des 0. Cela convient aux motifs de bits bruts et aux nombres qui ne sont jamais négatifs. Sur une valeur signée qui peut être négative, les 0 écrasent le marqueur de signe. La division signée par une puissance de deux utilise srai. Le choix entre les deux reflète la façon dont vous lisez les bits du registre.
Exemple
li t0, -8 srli t1, t0, 1 # t1 = 2147483644 (zero-filled)
