or

or

Assembly RISC-V Riferimento

lyszt.net tratta or e altre istruzioni RISC-V in modo più dettagliato.

Formato di codifica

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

Descrizione

or è un'istruzione bit a bit, quindi opera indipendentemente sui 32 bit di un registro (la pagina and lo spiega). In una posizione di bit il risultato è 1 se uno dei bit di input è 1 o se lo sono entrambi. Il risultato è 0 solo quando entrambi gli input sono 0. La forma seguente applica questo a tutte le 32 posizioni di rs1 e rs2 e scrive il risultato in rd.

or rd, rs1, rs2

OR imposta i bit. Per attivare un bit e lasciare gli altri come erano, si esegue l'OR del valore con una maschera che ha un 1 solo in quella posizione. Impostazioni e flag raggruppati in un unico registro vengono attivati in questo modo.

OR unisce anche i valori. Quando due valori vengono spostati in posizioni che non si sovrappongono, un solo OR li combina in un unico registro. Valori separati di rosso, verde e blu si combinano in un unico colore allo stesso modo.

Il manuale RISC-V elenca or tra le operazioni registro-registro. Legge i registri sorgente rs1 e rs2, esegue un OR logico bit a bit e scrive il risultato nel registro di destinazione rd.

OR può solo impostare i bit a 1. Cancellare un bit richiede AND con una maschera, e invertire un bit richiede XOR. ori è la versione che esegue l'OR di un registro con una costante fissa.

Esempio

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