addi
lyszt.net obejmuje addi i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
addi dodaje stałą do rejestru. Nazwa oznacza add immediate (dodaj natychmiastowe). Wartość natychmiastowa to stała zapisana w samej instrukcji, a nie odczytana z rejestru. Użyj jej, gdy jedna z liczb jest ustalona podczas pisania programu, na przykład przy dodawaniu 1 do licznika.
Postać addi pokazano poniżej. Odczytuje wartość z rejestru źródłowego rs1, dodaje stałą imm i zapisuje wynik do rejestru docelowego rd.
addi rd, rs1, imm
Następna linia odczytuje t0, dodaje jeden i zapisuje wynik z powrotem, więc t0 = t0 + 1.
addi t0, t0, 1
Stała zajmuje 12 bitów i jest ze znakiem, co daje zakres od -2048 do 2047. Asembler odrzuca większe wartości. W przypadku większej stałej najpierw załaduj ją do rejestru za pomocą li. Ujemna stała sprawia, że addi również odejmuje, dlatego RISC-V nie ma osobnej instrukcji odejmowania wartości natychmiastowej. Następna linia odlicza w dół.
addi t0, t0, -1
Podręcznik RISC-V nazywa tę stałą 12-bitową wartością natychmiastową ze znakiem rozszerzonym. Stwierdza, że przepełnienie arytmetyczne jest ignorowane, więc wynik zachowuje tylko swoje dolne bity XLEN, gdzie XLEN to szerokość rejestru w bitach, tutaj 32. Gdy znak stałej jest znany, jedno rozgałęzienie po dodaniu sprawdza przepełnienie ze znakiem. Dwie poniższe linie obsługują typowy przypadek dodawania dodatniej stałej.
addi t0, t1, +imm blt t0, t1, overflow
Programy używają addi do liczników, do przesuwania wskaźnika na następny element i do rezerwowania miejsca na stosie. Przykład dodaje 1, aby zwiększyć licznik, i dodaje -16, aby zarezerwować 16 bajtów pamięci roboczej, co jest typowym początkiem funkcji potrzebującej miejsca roboczego.
Przykład
addi t0, t0, 1 # t0++ addi sp, sp, -16 # reserve 16 bytes of stack
Odwołania
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.1, Integer Register-Immediate Instructions, pages 28 to 29.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
