xor

xor

Assembly RISC-V Riferimento

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

xor è un'istruzione bit a bit. Come and e or, opera sulle 32 posizioni di un registro (la pagina and tratta le operazioni bit a bit). Il nome sta per OR esclusivo. In ogni posizione, il risultato è 1 quando i due bit di input differiscono, uno 0 e uno 1, e 0 quando coincidono. La forma seguente applica ciò a rs1 e rs2 e scrive il risultato in rd.

xor rd, rs1, rs2

Due proprietà rendono XOR utile. Un valore sottoposto a XOR con se stesso dà 0, poiché ogni bit coincide con se stesso, quindi la riga successiva azzera un registro.

xor t0, t0, t0

XOR con una maschera inverte i bit dove la maschera ha un 1 e lascia gli altri invariati. Invertire due volte ripristina il valore originale. La crittografia semplice e i controlli degli errori si basano su questo.

XOR verifica anche l'uguaglianza. Dopo la riga seguente, t2 è zero quando i due input erano identici e diverso da zero quando differiscono, e un salto può verificare il risultato.

xor t2, t0, t1

Il manuale RISC-V elenca xor tra le operazioni registro-registro, che leggono rs1 e rs2 e scrivono il risultato in rd. Esegue un OR esclusivo logico bit a bit.

L'esempio azzera t0 a 0 qualunque cosa contenesse prima. L'istruzione li (load immediate) con la costante zero fa lo stesso.

Esempio

xor t0, t0, t0   # t0 = 0