srl
lyszt.net behandelt srl und andere RISC-V-Befehle ausführlicher.
Kodierungsformat
Beschreibung
srl verschiebt Bits nach rechts, das Gegenteil von dem, was sll tut. Die Buchstaben stehen für shift right logical (logische Rechtsverschiebung). Diese Form nimmt die Bits von rs1, verschiebt sie um den Zähler in rs2 nach rechts und speichert das Ergebnis in rd.
srl rd, rs1, rs2
Alle Bits, die über das rechte Ende hinausgeschoben werden, gehen verloren, und 0en füllen die frei gewordenen Stellen auf der linken Seite.
Diese Nullauffüllung erklärt das Wort logical. Eine Rechtsverschiebung halbiert einen Wert, also teilt eine Verschiebung um 1 durch 2 und eine Verschiebung um 3 durch 8. Der Rest wird verworfen, was der ganzzahligen Division entspricht. srl teilt eine vorzeichenlose Zahl schnell durch eine Zweierpotenz.
Es gibt zwei Rechtsverschiebungsbefehle, und der Unterschied liegt darin, was in die geleerten hohen Bits geschrieben wird. srl setzt dort 0en. Das Gegenstück sra kopiert das Vorzeichenbit in diese Positionen, was das Vorzeichen negativer Zahlen bewahrt. Wählen Sie srl für ein rohes Bitmuster oder einen Wert, der nicht negativ sein kann. Bei einem vorzeichenbehafteten Wert, der negativ sein kann, liefert srl eine große positive Zahl, und sra ist in diesem Fall der korrekte Befehl.
Laut dem RISC-V-Handbuch belegt der Verschiebungszähler die unteren 5 Bits des Registers rs2. Diese 5 Bits umfassen 0 bis 31 Stellen, sodass die übrigen Bits von rs2 ignoriert werden. Das Handbuch nennt srl eine logische Rechtsverschiebung, die Nullen oben einfügt.
Wenn der Verschiebungszähler eine Konstante ist, verwenden Sie die Immediate-Form srli.
Beispiel
li t0, -8 li t1, 1 srl t2, t0, t1 # t2 = 2147483644 (zero-filled)
