xor

xor

Asembler RISC-V Referencja

lyszt.net obejmuje xor i inne instrukcje RISC-V w większych szczegółach.

Format kodowania

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

Opis

xor to instrukcja bitowa. Podobnie jak and i or, działa na 32 pozycjach rejestru (strona and omawia operacje bitowe). Nazwa oznacza exclusive OR (alternatywę wykluczającą). Na każdej pozycji wynik wynosi 1, gdy dwa bity wejściowe się różnią, jeden 0 i jeden 1, a 0, gdy są takie same. Poniższa forma stosuje to do rs1 i rs2 i zapisuje wynik do rd.

xor rd, rs1, rs2

Dwie właściwości czynią XOR użytecznym. Wartość poddana XOR z samą sobą daje 0, ponieważ każdy bit jest zgodny sam ze sobą, więc następna linia ustawia rejestr na zero.

xor t0, t0, t0

XOR z maską odwraca bity tam, gdzie maska ma 1, a pozostałe pozostawia bez zmian. Dwukrotne odwrócenie przywraca pierwotną wartość. Opierają się na tym proste szyfrowanie i kontrole błędów.

XOR sprawdza także równość. Po poniższej linii t2 wynosi zero, gdy dwa wejścia były identyczne, a wartość niezerową, gdy się różnią, a rozgałęzienie może przetestować wynik.

xor t2, t0, t1

Podręcznik RISC-V wymienia xor wśród operacji rejestr-rejestr, które odczytują rs1 i rs2 i zapisują wynik do rd. Wykonuje ona bitową logiczną alternatywę wykluczającą.

Przykład zeruje t0 do 0 niezależnie od tego, co wcześniej zawierał. Instrukcja li (load immediate) ze stałą zero robi to samo.

Przykład

xor t0, t0, t0   # t0 = 0