2021-04 [seminár] Zásobník a alarm

Zdroj
ručne priradené
Pridané

Pozrieť na YouTube →

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.

Otvoriť AI: ChatGPT · Claude · Gemini

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.