slti
lyszt.net behandelt slti und andere RISC-V-Befehle ausführlicher.
Kodierungsformat
Beschreibung
slti vergleicht ein Register mit einer Konstante und schreibt 1 oder 0 in das Ziel. Es ist slt, das zwei Register vergleicht und das Ergebnis als Zahl speichert (siehe diese Seite), wobei der zweite Wert als Immediate angegeben wird. Ein Immediate ist eine in der Anweisung kodierte Konstante, und das i im Namen kennzeichnet dies.
Die Form von slti ist unten dargestellt. Wenn der Wert in rs1 kleiner als die Konstante imm ist, erhält rd 1, andernfalls 0.
slti rd, rs1, imm
Der Vergleich ist vorzeichenbehaftet, sodass das Register und die Konstante beide als Zahlen gelesen werden, die negativ sein können.
Verwenden Sie es, um eine Variable mit einem im Voraus bekannten festen Schwellenwert zu vergleichen. Zu prüfen, ob ein Index unter 10 liegt oder ob ein Wert unter eine Grenze gefallen ist, erfordert ein einziges slti. Die nächste Zeile fragt, ob t0 kleiner als null ist, was auf einen negativen Wert prüft und t1 auf 1 für negative Werte und andernfalls auf 0 setzt.
slti t1, t0, 0
Das RISC-V-Handbuch besagt, dass slti 1 in rd setzt, wenn rs1 kleiner als das vorzeichenerweiterte Immediate ist, wenn beide als vorzeichenbehaftete Zahlen behandelt werden, und andernfalls 0. Die Überlaufprüfung für die allgemeine vorzeichenbehaftete Addition verwendet es, wie auf der slt-Seite gezeigt, um festzuhalten, ob ein Operand negativ ist.
Die Konstante reicht von -2048 bis 2047. Um mit einem größeren Wert zu vergleichen, laden Sie die Konstante mit li in ein Register und verwenden Sie slt. Der Assembler lehnt eine Konstante außerhalb des Bereichs mit einer Fehlermeldung ab.
Beispiel
li t0, 3 slti t1, t0, 5 # t1 = 1 (3 < 5)
Referenzen
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.1, Integer Register-Immediate Instructions, pages 28 to 29.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
