li
pseudolyszt.net obejmuje li i inne instrukcje RISC-V w większych szczegółach.
Opis
li ładuje stałą liczbę do rejestru. Nazwa oznacza load immediate (załaduj natychmiast), a wartość natychmiastowa to stała wartość zapisana bezpośrednio w kodzie. Następny wiersz zapisuje 42 w t0.
li t0, 42
Większość programów zaczyna się od umieszczenia znanych liczb w rejestrach, w tym liczników, limitów i kodów usług.
Słowo load pochodzi od ograniczenia sprzętowego. Instrukcja RISC-V ma 32 bity długości i musi jednocześnie zawierać operację, rejestry i stałą. Jedna instrukcja nie może pomieścić pełnej 32-bitowej stałej. Małe stałe się mieszczą, a duże nie.
li obchodzi to ograniczenie. Jest pseudoinstrukcją, nazwą, którą asembler zastępuje rzeczywistymi instrukcjami wymaganymi przez wartość. Mała wartość wymaga jednej instrukcji. Duża wartość wymaga dwóch: jednej, która ustawia górną część, i jednej, która dodaje dolną część, dzięki czemu następny wiersz działa dla liczby dowolnego rozmiaru.
li t1, 0x10010000
Symulator wyświetla rzeczywiste instrukcje, na które rozwija się li.
Podręcznik RISC-V opisuje lui jako instrukcję do budowania 32-bitowych stałych. Umieszcza 20-bitową wartość w górnych bitach rejestru docelowego i wypełnia najniższe 12 bitów zerami.
li i la ładują różne rzeczy. li ładuje liczbę, którą wpisałeś, a la ładuje adres, który reprezentuje etykieta. Przykład ładuje małą wartość i dużą, a asembler obsługuje obie w ten sam sposób.
Rozwija się do
addi rd, zero, imm # small constants lui rd, hi + addi rd, rd, lo # large constants
Asembler zastępuje tę pseudoinstrukcję rzeczywistą instrukcją lub instrukcjami wymienionymi powyżej.
Przykład
li t0, 42 li t1, 0x10010000
