add
lyszt.net obejmuje add i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
add sumuje wartości z dwóch rejestrów i zapisuje wynik w trzecim. Rejestr to mały slot wewnątrz procesora, który przechowuje pojedynczą liczbę 32-bitową. RISC-V udostępnia 32 rejestry. Bit to jedno 0 lub 1, a 32 bity obejmują liczby całkowite od 0 do około czterech miliardów. Arytmetyka odbywa się między rejestrami i nigdy nie dotyka pamięci bezpośrednio.
add ma poniższą postać, a wynikiem jest rd = rs1 + rs2. rd to rejestr docelowy, do którego trafia odpowiedź. rs1 i rs2 to rejestry źródłowe, a ich wartości pozostają takie same.
add rd, rs1, rs2
Rejestr docelowy może również służyć jako źródło. Poniższa linia dodaje t1 do t0 i umieszcza wynik z powrotem w t0. Sumy bieżące w pętlach używają tej postaci.
add t0, t0, t1
Rejestr przechowuje co najwyżej 32 bity. Gdy suma przekracza największą wartość, jaką może przechować rejestr, wynik zawija się do małej liczby, tak jak zegar 24-godzinny przechodzi z 23:59 z powrotem na 00:00. To jest przepełnienie, a RISC-V nie daje żadnego ostrzeżenia, gdy ono wystąpi.
Podręcznik RISC-V stwierdza, że żadna całkowitoliczbowa instrukcja obliczeniowa nie zgłasza wyjątku arytmetycznego oraz że podstawowy zestaw instrukcji nie zawiera sprawdzeń przepełnienia, ponieważ skoki wykonują to zadanie niskim kosztem. W przypadku dodawania bez znaku wystarczy jeden skok po add. W dwóch poniższych liniach skok przeskakuje do etykiety overflow, gdy suma jest mniejsza niż operand, co zdarza się tylko wtedy, gdy suma się zawinęła.
add t0, t1, t2 bltu t0, t1, overflow
W przykładzie pierwsze dwie linie używają li (load immediate), aby umieścić stałe 3 i 4 w t0 i t1. Linia add pozostawia następnie 7 w t2.
Przykład
li t0, 3 li t1, 4 add t2, t0, t1 # t2 = 7
Odwołania
- [1]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4.2, Integer Register-Register Instructions, page 29.
