and

and

Assembly RISC-V Riferimento

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

and è un'istruzione bit a bit. Un registro contiene 32 bit, ovvero 32 0 e 1 separati in fila. Un'istruzione bit a bit applica la sua operazione a tutte le 32 posizioni in modo indipendente, e nessun riporto passa tra le posizioni.

Su un singolo bit, AND dà 1 solo quando entrambi i bit di input sono 1, e 0 altrimenti. La forma seguente applica questa regola a tutte le 32 posizioni, confrontando rs1 e rs2 e scrivendo il risultato in rd.

and rd, rs1, rs2

AND è usato per il mascheramento, che mantiene alcuni bit e ne azzera altri. Dove la maschera ha un 1, il bit originale rimane. Dove la maschera ha uno 0, il risultato è 0. Eseguire l'AND di un valore con la maschera 00001111 mantiene i quattro bit bassi e azzera il resto. Il mascheramento estrae un campo da un valore che raggruppa diversi campi insieme.

Il manuale RISC-V elenca and, or e xor tra le operazioni registro-registro. Tutte leggono i registri sorgente rs1 e rs2, scrivono il risultato nel registro di destinazione rd ed eseguono operazioni logiche bit a bit.

Nell'esempio, 0b1100 (il prefisso 0b indica cifre binarie) viene combinato in AND con 0b1010. Entrambi gli input hanno un 1 solo nella posizione più a sinistra, quindi il risultato è 0b1000, e va in t2.

Esempio

li t0, 0b1100
li t1, 0b1010
and t2, t0, t1   # t2 = 0b1000