# L07 · Addresses and Memory Karta przechodzi od wartości immediate do adresu bajtowego. Uczeń sprawdza `LUI/AUIPC`, implementuje mały RAM słowowy, a następnie łączy sumator adresu z pamięcią i jawną kontrolą wyrównania. ## Taski | Task | PASS | | --- | --- | | `task01_upper_immediate` | `LUI=0x12345000`, `AUIPC=0x12345100` | | `task02_word_ram` | dwa niezależne słowa i odrzucony dostęp niewyrównany | | `task03_address_memory_path` | adres `0x2c`, zapis/odczyt `deadbeef`, fault dla `+2` | ```bash stemctl card use rv32i-asm L07 stemctl test native-amd64 rv32i-asm L07 1 stemctl test hazard3-sim rv32i-asm L07 2 stemctl debug hazard3-sim rv32i-asm L07 3 ``` Model AMD64 i RTL są niezależne. `debug` generuje VCD. Wyniki należy zapisać w [answers/address-memory-evidence.md](answers/address-memory-evidence.md). Inwarianty: - `LUI` umieszcza `imm20` w bitach 31:12, a `AUIPC` dodaje tę wartość do PC; - adres pamięci jest adresem bajtowym, indeks RAM używa bitów `[5:2]`; - zapis następuje tylko dla aktywnego żądania wyrównanego do czterech bajtów; - niewyrównane żądanie ustawia `fault` i nie zmienia RAM; - odczyt jest kombinacyjny, zapis synchroniczny. L08 użyje tej pamięci do obserwacji stosu wywołań i reguł ABI.