xor
lyszt.net behandelt xor und andere RISC-V-Befehle ausführlicher.
Kodierungsformat
Beschreibung
xor ist eine bitweise Anweisung. Wie and und or arbeitet sie auf den 32 Positionen eines Registers (die Seite and behandelt bitweise Operationen). Der Name steht für exklusives ODER. An jeder Position ist das Ergebnis 1, wenn die beiden Eingabebits unterschiedlich sind, also eines 0 und eines 1, und 0, wenn sie übereinstimmen. Die folgende Form wendet dies auf rs1 und rs2 an und schreibt das Ergebnis nach rd.
xor rd, rs1, rs2
Zwei Eigenschaften machen XOR nützlich. Ein Wert, mit sich selbst XOR-verknüpft, ergibt 0, da jedes Bit mit sich selbst übereinstimmt, sodass die nächste Zeile ein Register auf null setzt.
xor t0, t0, t0
XOR mit einer Maske invertiert die Bits, an denen die Maske eine 1 hat, und lässt die übrigen unverändert. Zweimaliges Invertieren stellt den ursprünglichen Wert wieder her. Einfache Verschlüsselung und Fehlerprüfungen beruhen darauf.
XOR prüft auch auf Gleichheit. Nach der folgenden Zeile ist t2 null, wenn die beiden Eingaben identisch waren, und ungleich null, wenn sie sich unterscheiden, und ein Sprung kann das Ergebnis prüfen.
xor t2, t0, t1
Das RISC-V-Handbuch führt xor unter den Register-Register-Operationen auf, die rs1 und rs2 lesen und das Ergebnis nach rd schreiben. Sie führt ein bitweises logisches exklusives ODER aus.
Das Beispiel setzt t0 auf 0, unabhängig davon, was es zuvor enthielt. Die Anweisung li (load immediate) mit der Konstante null bewirkt dasselbe.
Beispiel
xor t0, t0, t0 # t0 = 0
