2021-04 [seminár] Zásobník a alarm
Preber si túto prednášku so svojou AI
Skopíruj pripravený podklad a vlož ho do ChatGPT, Claude alebo inej AI — bude ťa učiť alebo skúšať len z tejto prednášky.
Zhrnutie prednášky
Seminár sa venuje architektúre RISC-V a mechanizmu zásobníka pri volaní funkcií, ako príprava na štvrté cvičenie o výnimkách. Vysvetľuje sa štruktúra zásobníkového rámca, úloha registrov SP (stack pointer) a FP (frame pointer) a spôsob, akým sa pri volaní funkcie ukladá návratová adresa a smerník na predchádzajúci rámec. Na konkrétnom príklade s troma funkciami sa demonštruje postupné vytváranie zásobníkových rámcov a ich prepojenie cez smerníky na predchádzajúci rámec, čo je základ pre implementáciu funkcie backtrace. Ukazuje sa tiež prológ a epilóg funkcie generovaný kompilátorom na reálnom príklade z jadra XV6. Na záver sa krátko načrtáva téma alarmu, ktorá bude témou ďalšej časti cvičenia.
- - Zásobník rastie od vyšších adries k nižším, SP ukazuje na vrchol zásobníka, FP na začiatok aktívneho rámca
- - Pri volaní funkcie sa na zásobník najprv uloží návratová adresa, potom smerník na predchádzajúci rámec a následne callee-saved registre
- - Lokálne premenné funkcie sa ukladajú na zásobník za uloženými registrami
- - Backtrace sa dá zostaviť sledovaním reťazca smerníkov na predchádzajúce rámce a čítaním návratových adries vo fixnom offsete od FP
- - Prológ funkcie alokuje miesto na zásobníku a ukladá registre (ra, s0, s1...), epilóg ich pri návrate obnovuje
- - Argumenty, ktoré sa nezmestia do registrov A0–A5, sa tiež ukladajú na zásobník
- - Druhá úloha cvičenia spočíva v naprogramovaní funkcie vypisujúcej backtrace (výpis návratových adries)
Zhrnutie pripravené s pomocou AI z prepisu videa.
nechodím na prednášky