# L09 · Load and Store Semantics Karta domyka tor pamięci RV32I. Uczeń tworzy maski linii bajtowych dla `SB/SH/SW`, wykonuje sign/zero extension dla `LB/LH/LW/LBU/LHU`, a na końcu łączy obie ścieżki w jednostce load/store z małym RAM. ## Taski | Task | PASS | | --- | --- | | `task01_store_lanes` | maski `1000`, `1100`, `1111` i fault dla niewyrównanego SH | | `task02_load_extend` | poprawne LB/LBU oraz LH/LHU z jednego słowa | | `task03_load_store_unit` | po `SW` i `SB +1`: słowo `1122aa44`, LB/LBU i fault LW +2 | ```bash stemctl card use rv32i-asm L09 stemctl test native-amd64 rv32i-asm L09 1 stemctl test hazard3-sim rv32i-asm L09 2 stemctl debug hazard3-sim rv32i-asm L09 3 ``` Model AMD64 i RTL są niezależne. `debug` generuje VCD. Wyniki należy zapisać w [answers/load-store-evidence.md](answers/load-store-evidence.md). Inwarianty: - RV32I jest little-endian: offset 0 wskazuje bity 7:0 słowa; - `SB` zmienia jedną linię bajtową, `SH` dwie, `SW` cztery; - load signed replikuje bit znaku, load unsigned wstawia zera; - halfword wymaga adresu parzystego, word adresu podzielnego przez cztery; - fault zeruje maskę zapisu i nie modyfikuje RAM. Po L09 uczeń ma wszystkie bloki potrzebne do spięcia minimalnego toru RV32I.