sltiu
lyszt.net obejmuje sltiu i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
sltiu łączy slti i sltu. Porównuje rejestr ze stałą i traktuje obie wartości jako bezznakowe. Nazwa składa się z części: set less than, immediate, unsigned. Poniższa postać zapisuje 1 do rd, gdy rs1 jest mniejsze od stałej imm, przy czym obie wartości są odczytywane jako liczby nieujemne, a w przeciwnym razie 0.
sltiu rd, rs1, imm
Bezznakowość, podobnie jak na stronie sltu, oznacza, że najstarszy bit liczy się jako zwykła cyfra liczby, więc zakres rozciąga się od 0 do około 4 miliardów. sltiu obsługuje sprawdzanie zakresu dla wartości, które nie mogą być ujemne, na przykład sprawdzanie, czy indeks jest mniejszy od rozmiaru tablicy, w jednej instrukcji.
Poniższy wiersz pyta, czy wartość jest mniejsza od 1.
sltiu rd, rs, 1
Zero jest jedyną bezznakową wartością mniejszą od 1, więc wynikiem jest 1, gdy rs wynosi zero, a w przeciwnym razie 0. To sprawdza równość z zerem, a skrót seqz jest na tym zbudowany. Równość między dwiema wartościami wynika z tego. Wykonaj XOR obu wartości, co daje zero tylko wtedy, gdy są równe, i sprawdź, czy wynik jest zerem.
Podręcznik RISC-V mówi, że stała jest najpierw rozszerzana znakowo do 32 bitów, a następnie traktowana jako liczba bezznakowa. Stała ujemna staje się więc bardzo dużą wartością bezznakową. Podręcznik podaje sltiu ze stałą 1 jako sposób sprawdzania zera, czyli pseudorozkaz seqz.
Podobnie jak w przypadku slti, stałe spoza zakresu 12 bitów są ładowane do rejestru za pomocą li i porównywane z sltu.
Przykład
li t0, -1 sltiu t1, t0, 5 # t1 = 0 (t0 read as unsigned is huge)
