Програмски конструкти во MIPS и процедури Flashcards
I колоквиум
Што е процедура?
Процедура е складирана подрутина што извршува одредена задача заснована врз внесените параметри
Чекори при извршување на процедура
При изведувањето на процедурата, програмата мора да следи шест чекори:
1. Сместување на параметрите таму каде што процедурата може да им пристапи
2. Префрлање на контролата на процедурата
3. Доделување ресурси за складирање, потребни за процедурата
4. Извршување на посакуваната задача
5. Сместување на вредноста на резултатот таму каде што повикувачката програма може да и пристапи
6. Враќање на контролата кон точката на повикување, бидејќи процедурата може да биде повикана од повеќе точки во програмата
Што прави jump-and-link?
- Во регистерот $ra ја запишува адресата од каде што била повикана процедурата
- Скока до адресата од каде почнува процедурата
Што прави jump-register?
Од процедурата се враќаме до повикувачкото место со jump-register
jr $ra
Што е program counter?
Program Counter (PC) е регистер каде се чува адресата на инструкцијата што моментално се извршува
Што се запишува во $ra при инструкција jal?
Инструкцијата jal во регистерот $ra ја запишува адресата на следната инструкција PC+4
Контекст
- Контекст означува „околина“ во која нешто се извршува (пишува, зборува)
– Во случај на процесорот тоа се вредностите на регистрите - Пред повикот на процедурата, треба да се зачуваат вредностите на сите потребни регистри
– Зачувување на контекстот - Кога ќе заврши процедурата, пред процесорот да се врати на извршување на главната програма, вредностите на регистрите треба да се ажурираат
– Враќање на првобитниот контекст
Користење на повеќе регистри
- Доколку компајлерот има потреба да користи повеќе регистри, мора најпрвин да ги зачува на сигурно место.
- Откако ќе заврши употребата на регистрите, мора да бидат вратени вредностите затекнати пред повикот на процедурата
- Податочната структура во која се прелеваат (чуваат) регистрите се вика стек (stack)
Што е стек и како работи?
- Стек е редица од зборови која функционира по правилото последен-влегол-прв-излегол
- На секој стек му е потребен стек покажувач кој ќе покажува кон последната адреса
– Во MIPS тоа е $sp или $29 - Складирањето податоци во стекот е познато како PUSH (притисни)
- Вадењето податоци е познато како POP (извади)