sw
lyszt.net obejmuje sw i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
sw pobiera wartość z rejestru i zapisuje ją do pamięci, przeciwieństwo lw. Nazwa oznacza store word (zapisz słowo), a słowo ma 32 bity. Ładowania przenoszą dane z pamięci do rejestrów, aby można było na nich pracować, a zapisy odsyłają wyniki z powrotem. Te dwie instrukcje składają się na cykl ładowania, obliczania i zapisu w RISC-V, ponieważ arytmetyka odbywa się wyłącznie w rejestrach.
Składnia sw znajduje się poniżej. Kolejność operandów różni się od większości instrukcji.
sw rs2, offset(rs1)
rs2 przechowuje wartość do zapisania. Drugi operand, offset(rs1), podaje adres docelowy w pamięci: adres w rejestrze bazowym rs1 plus niewielki stały offset, ten sam sposób adresowania, którego używa lw. Poniższa linia zapisuje wartość z t1 pod adres przechowywany w t0.
sw t1, 0(t0)
sw pozostawia każdy rejestr bez zmian. Jego efekt dotyczy wyłącznie pamięci, podczas gdy niemal każda inna instrukcja zapisuje do rejestru.
Podręcznik RISC-V podaje, że sw, sh i sb zapisują do pamięci wartości 32-, 16- i 8-bitowe z dolnych bitów rejestru rs2. Adres efektywny to rejestr rs1 plus 12-bitowy offset z rozszerzeniem znaku. Ładowania i zapisy pod adresami naturalnie wyrównanymi nigdy nie zgłaszają błędu wyrównania, a podręcznik gwarantuje, że wykonują się atomowo, jako jeden niepodzielny krok.
Zapisy zachowują wyniki w tablicach i zmiennych, a funkcja używa ich do umieszczania wartości w swojej przestrzeni roboczej na stosie. Zapis nadpisuje wszystkie 4 bajty pod adresem docelowym. Przykład zapisuje 99 w oznaczonym miejscu w pamięci, zastępując to, co się tam znajdowało. Pamięć przechowuje tę wartość, dopóki inny zapis jej nie nadpisze, w przeciwieństwie do rejestru.
Przykład
la t0, slot li t1, 99 sw t1, 0(t0) # memory at slot now holds 99
