ori
lyszt.net behandelt ori und andere RISC-V-Befehle ausführlicher.
Kodierungsformat
Beschreibung
ori führt ein bitweises OR mit einer Konstante aus. Seine Beziehung zu or entspricht der von andi zu and. Das i bedeutet immediate, ein fester Wert, der in der Anweisung kodiert ist. ori verknüpft ein Register mit dieser Konstante per OR, statt zwei Register per OR zu verknüpfen. Die OR-Regel ändert sich nicht. Eine Bitposition im Ergebnis ist 1, wenn eines der Bits dort 1 ist, sodass die Konstante die von Ihnen gewählten Bits setzt. Die Seite or behandelt die Operation.
Die Form von ori erscheint unten. Sie verknüpft den Wert in rs1 mit der Konstante imm per OR und schreibt das Ergebnis nach rd.
ori rd, rs1, imm
OR setzt Bits und lässt die übrigen unverändert, sodass ori bestimmte Flags einschaltet, wenn Sie wissen, welche Sie wollen. Die nächste Zeile schaltet das dritte Bit von rechts in t0 ein und lässt alle anderen Bits unverändert. Das Präfix 0b kennzeichnet eine binäre Konstante.
ori t0, t0, 0b100
Konfigurationsregister, Berechtigungs-Flags und Statuswörter enthalten unabhängige Ein- und Aus-Bits, und ori schaltet ausgewählte in einer einzigen Anweisung ohne Maskenregister ein.
Das RISC-V-Handbuch gibt an, dass der 12-Bit-Immediate vor der Operation auf 32 Bit vorzeichenerweitert wird. Eine negative Konstante hat daher alle ihre oberen Bits gesetzt, und ori mit -1 setzt alle Bits des Ergebnisses.
Die Konstante ist auf 12 Bit begrenzt, wie bei andi und addi. Um Bits außerhalb dieses Bereichs zu setzen, laden Sie die breitere Maske mit li in ein Register und verwenden Sie or.
Beispiel
li t0, 0 ori t1, t0, 0xf # t1 = 0xf
