ori

ori

Assembly RISC-V Riferimento

lyszt.net tratta ori 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

ori esegue un OR bit a bit con una costante. La sua relazione con or corrisponde a quella di andi con and. La i significa immediato, un valore fisso codificato nell'istruzione. ori esegue l'OR di un registro con quella costante invece di eseguire l'OR di due registri. La regola dell'OR non cambia. Una posizione di bit nel risultato è 1 quando uno dei bit in quella posizione è 1, quindi la costante imposta i bit che scegli. La pagina or copre l'operazione.

La forma di ori appare di seguito. Esegue l'OR del valore in rs1 con la costante imm e scrive il risultato in rd.

ori rd, rs1, imm

L'OR imposta i bit e lascia gli altri come erano, quindi ori attiva flag specifici quando sai quali vuoi. La riga successiva attiva il terzo bit da destra in t0 e lascia tutti gli altri bit invariati. Il prefisso 0b contrassegna una costante binaria.

ori t0, t0, 0b100

I registri di configurazione, i flag di autorizzazione e le parole di stato contengono bit indipendenti di attivazione e disattivazione, e ori attiva quelli scelti in una singola istruzione senza registro di maschera.

Il manuale RISC-V afferma che l'immediato a 12 bit viene esteso con il segno a 32 bit prima dell'operazione. Una costante negativa ha quindi tutti i bit superiori impostati, e ori con -1 imposta tutti i bit del risultato.

La costante è limitata a 12 bit, come con andi e addi. Per impostare bit al di fuori di tale intervallo, carica la maschera più ampia in un registro con li e usa or.

Esempio

li t0, 0
ori t1, t0, 0xf   # t1 = 0xf