lipseudo

li

pseudo
Asembler RISC-V Referencja

lyszt.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