not
pseudolyszt.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)
