sub
lyszt.net obejmuje sub i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
sub odejmuje wartość z jednego rejestru od wartości z drugiego i zapisuje wynik do trzeciego. Działa na rejestrach, czyli niewielkich, ponumerowanych komórkach pamięci wewnątrz procesora, z których każda mieści jedną liczbę 32-bitową.
Poniżej przedstawiono formę sub, a wynikiem jest rd = rs1 - rs2. rd to rejestr docelowy, do którego trafia wynik. rs1 i rs2 to rejestry źródłowe. Kolejność ma znaczenie, a jej odwrócenie jest częstym błędem popełnianym przez początkujących.
sub rd, rs1, rs2
Następna linia oblicza różnicę t0 minus t1. Źródło po lewej stronie to wartość, od której odejmowana jest druga wartość.
sub t2, t0, t1
Nie ma instrukcji subi służącej do odejmowania stałej. Instrukcja addi akceptuje stałe ujemne, więc odejmowanie stałej liczby oznacza dodanie jej ujemnej wartości. Następna linia zmniejsza wartość t0 o jeden.
addi t0, t0, -1
RISC-V posiada specjalny rejestr o nazwie zero, który zawsze przechowuje wartość 0. Odejmowanie liczby od zero powoduje zmianę jej znaku, więc następna linia umieszcza wartość ujemną t1 w t0. Instrukcja neg jest skrótem tej operacji.
sub t0, zero, t1
Podręcznik RISC-V definiuje instrukcję sub jako odejmowanie rs2 od rs1. Przepełnienie jest ignorowane, a do rejestru rd zapisywane są tylko najniższe bity wyniku o długości XLEN, gdzie XLEN oznacza szerokość rejestru w bitach, która w tym przypadku wynosi 32. Podręcznik wymienia również rejestr x0, który w tym symulatorze nosi nazwę zero, jako zarejestrowany na stałe z wartością, w której wszystkie bity mają wartość 0.
W przykładzie 10 minus 4 daje w wyniku 6 w t2. Zamiana dwóch źródeł daje -6, co procesor zapisuje zgodnie z własnym schematem dla liczb ujemnych.
Przykład
li t0, 10 li t1, 4 sub t2, t0, t1 # t2 = 6
Odwołania
- [1]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.
- [2]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.1, Programmers' Model for Base Integer ISA, page 23.
- [3]RISC-V International. The RISC-V Instruction Set Manual, Volume I: Unprivileged Architecture. Version 20260120. Section 2.4, Integer Computational Instructions, page 27.
