xor
lyszt.net couvre xor et d'autres instructions RISC-V plus en détail.
Format d'encodage
Description
xor est une instruction bit à bit. Comme and et or, elle opère sur les 32 positions d'un registre (la page and couvre les opérations bit à bit). Le nom signifie OU exclusif. À chaque position, le résultat est 1 lorsque les deux bits d'entrée diffèrent, l'un valant 0 et l'autre 1, et 0 lorsqu'ils sont identiques. La forme ci-dessous applique cela à rs1 et rs2 et écrit le résultat dans rd.
xor rd, rs1, rs2
Deux propriétés rendent XOR utile. Une valeur XORée avec elle-même donne 0, puisque chaque bit correspond à lui-même, donc la ligne suivante met un registre à zéro.
xor t0, t0, t0
XOR avec un masque inverse les bits là où le masque contient un 1 et laisse les autres inchangés. Inverser deux fois restaure la valeur d'origine. Le chiffrement simple et les contrôles d'erreur reposent sur ce principe.
XOR permet aussi de tester l'égalité. Après la ligne ci-dessous, t2 vaut zéro lorsque les deux entrées étaient identiques et non nul lorsqu'elles diffèrent, et un branchement peut tester le résultat.
xor t2, t0, t1
Le manuel RISC-V liste xor parmi les opérations registre-registre, qui lisent rs1 et rs2 et écrivent le résultat dans rd. Elle effectue un OU exclusif logique bit à bit.
L'exemple met t0 à 0 quelle que soit sa valeur précédente. L'instruction li (load immediate) avec la constante zéro fait de même.
Exemple
xor t0, t0, t0 # t0 = 0
