sb
lyszt.net obejmuje sb i inne instrukcje RISC-V w większych szczegółach.
Format kodowania
Opis
sb zapisuje jeden bajt (8 bitów) do pamięci, co jest najmniejszą ilością, jaką może zapisać store. Jest to odpowiednik store dla loadów lb i lbu. Składnia znajduje się poniżej. Odczytuje wartość z rejestru źródłowego rs2 i zapisuje jego najniższe 8 bitów pod adres utworzony przez rejestr bazowy rs1 plus offset. Układ operandów odpowiada sw, z rejestrem źródłowym wymienionym jako pierwszy.
sb rs2, offset(rs1)
Tylko najniższe 8 z 32 bitów rejestru trafiają do pamięci, a pozostałe bity są odrzucane. Store nie ma formy ze znakiem ani bez znaku, ponieważ zawęża wartość i zachowuje dolny bajt. Wartość szersza niż bajt traci dodatkowe bity bez ostrzeżenia. Zapisanie 300 zapisuje 44, ponieważ 300 przekracza 256.
Najmniejszą jednostką pamięci jest bajt, więc sb buduje dane bajt po bajcie, na przykład do składania tekstu znak po znaku, wypełniania bufora lub zapisywania pojedynczych wartości kolorów. Kolejne bajty zajmują adresy odległe o jeden, więc pętla przesuwa się, dodając 1.
Podręcznik RISC-V mówi, że sb zapisuje niskie 8 bitów rejestru rs2 do pamięci pod adresem rs1 plus 12-bitowy offset z rozszerzeniem znaku. Pamięć jest adresowana bajtowo, więc store bajtu jest zawsze naturalnie wyrównany.
Częste ćwiczenie polega na ręcznym zapisaniu tekstu. Zapisz kod każdego znaku za pomocą sb, zakończ sekwencję bajtem 0, a następnie ją wydrukuj. Kody 72, 105 i 0 w pamięci drukują się jako słowo Hi, co pokazuje, że łańcuch to bajty w kolejnych komórkach pamięci zakończone zerem. Store zmienia tylko jeden docelowy bajt, a sąsiednie bajty zachowują swoje poprzednie wartości.
Przykład
la t0, slot li t1, 200 sb t1, 0(t0) # memory at slot now holds the low 8 bits, 200
