notpseudo

not

pseudo
Asembler RISC-V Referencja

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

Opis

not odwraca wszystkie bity rejestru. 0 staje się 1, a 1 staje się 0. Poniższa forma odczytuje rejestr źródłowy rs, odwraca wszystkie 32 bity i zapisuje wynik do rejestru docelowego rd. Ta operacja to dopełnienie bitowe.

not rd, rs

not to pseudoinstrukcja: czytelna nazwa, którą asembler przepisuje na rzeczywistą instrukcję. Staje się poniższą instrukcją, czyli XOR z maską samych 1.

xori rd, rs, -1

XOR odwraca bit tam, gdzie maska ma 1, więc maska samych 1 odwraca wszystkie bity. Wartość -1 to same 1 w bitach, dlatego działa jako maska. RISC-V nie ma dedykowanej instrukcji odwracania, ponieważ to przepisanie ją obsługuje.

not daje przeciwieństwo maski. Jeśli wzorzec wybiera pewne bity, not daje wzorzec, który wybiera pozostałe. Użycie not z and czyści bity nazwane przez oryginalną maskę, co wyłącza zestaw flag.

Podręcznik RISC-V definiuje not jako pseudoinstrukcję asemblera dla xori ze stałą -1 i opisuje to xori jako bitowe logiczne odwrócenie rejestru rs1.

not i neg dają różne wyniki. not odwraca bity, a neg odwraca znak. not z 5 to -6, a neg z 5 to -5. Ślad symulatora pokazuje xori, które wykonuje się zamiast not.

Rozwija się do

xori rd, rs, -1

Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.

Przykład

li t0, 0
not t1, t0       # t1 = -1 (every bit flipped)