xori
lyszt.net obejmuje xori i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
xori wykonuje bitową operację XOR ze stałą. Wraz z andi i ori dopełnia instrukcje logiczne z argumentem natychmiastowym. Litera i oznacza immediate (natychmiastowy): stała wartość zakodowana w instrukcji, więc drugi rejestr nie jest potrzebny. XOR daje 1 na danej pozycji bitu, gdy dwa bity się różnią (zobacz stronę xor). Przy danej stałej masce 1 w masce odwraca odpowiedni bit, a 0 pozostawia ten bit bez zmian.
Składnia xori znajduje się poniżej. Wykonuje XOR wartości w rs1 ze stałą imm i zapisuje wynik do rd.
xori rd, rs1, imm
andi zeruje wybrane bity, ori je ustawia, a xori je odwraca. Dwukrotne odwrócenie przywraca wartość pierwotną.
xori udostępnia również instrukcję not. Odwrócenie wszystkich bitów wartości oznacza XOR z maską złożoną z samych 1, a not jest skrótem dla poniższej linii, ponieważ -1 w bitach to same 1. RISC-V nie ma dedykowanej instrukcji, która odwraca każdy bit.
xori rd, rs, -1
Podręcznik RISC-V stwierdza, że 12-bitowy argument natychmiastowy jest rozszerzany znakowo do 32 bitów przed operacją, więc stała -1 staje się maską złożoną z samych 1. Wymienia xori ze stałą -1 jako bitowe logiczne odwrócenie rejestru, czyli pseudoinstrukcję not.
Typowe małe zastosowanie przełącza wartość tak lub nie przechowywaną jako 0 lub 1. Następna linia przełącza ją do drugiego stanu za każdym razem, gdy zostanie wykonana.
xori t0, t0, 1
Stała jest ograniczona do 12 bitów. Dla szerszych wzorców załaduj maskę do rejestru i użyj xor.
Przykład
li t0, 0 xori t1, t0, -1 # t1 = -1 (every bit flipped)
