or

or

Asembler RISC-V Referencja

lyszt.net obejmuje or i inne instrukcje RISC-V w większych szczegółach.

Format kodowania

R
31–25funct7
24–20rs2
19–15rs1
14–12funct3
11–7rd
6–0opcode
I
31–20imm[11:0]
19–15rs1
14–12funct3
11–7rd
6–0opcode
S
31–25imm[11:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:0]
6–0opcode
B
31–25imm[12,10:5]
24–20rs2
19–15rs1
14–12funct3
11–7imm[4:1,11]
6–0opcode
U
31–12imm[31:12]
11–7rd
6–0opcode
J
31–12imm[20,10:1,11,19:12]
11–7rd
6–0opcode

Opis

or to instrukcja bitowa, więc działa niezależnie na 32 bitach rejestru (strona and to wyjaśnia). Na danej pozycji bitu wynik wynosi 1, jeśli którykolwiek bit wejściowy jest 1 lub oba są 1. Wynik wynosi 0 tylko wtedy, gdy oba wejścia są 0. Poniższa postać stosuje to do wszystkich 32 pozycji rs1 i rs2 i zapisuje wynik do rd.

or rd, rs1, rs2

OR ustawia bity. Aby włączyć jeden bit i pozostawić pozostałe bez zmian, należy wykonać OR wartości z maską, która ma 1 tylko na tej pozycji. Ustawienia i flagi upakowane w jednym rejestrze są włączane w ten sposób.

OR także scala wartości. Gdy dwie wartości zostaną przesunięte na pozycje, które się nie nakładają, jedno OR łączy je w jeden rejestr. Oddzielne wartości czerwonego, zielonego i niebieskiego łączą się w jeden kolor w ten sam sposób.

Podręcznik RISC-V wymienia or wśród operacji rejestr-rejestr. Odczytuje rejestry źródłowe rs1 i rs2, wykonuje bitowe logiczne OR i zapisuje wynik do rejestru docelowego rd.

OR może tylko ustawiać bity na 1. Wyczyszczenie bitu wymaga AND z maską, a odwrócenie bitu wymaga XOR. ori to wersja, która wykonuje OR rejestru ze stałą.

Przykład

li t0, 0b1100
li t1, 0b0011
or t2, t0, t1   # t2 = 0b1111