7163313945

7163313945



b) Przeprowadzić asemblację i wykonać program krokowo. Proszę zaobserwować wykonanie operacji wskazywanej w instrukcji jal: jaki adres jest zapamiętany w $ra, jaki jest adres początkowy funkcji? Zaobserwować zakończenie funkcji: jaki jest adres w $ra, jaki jest adres instrukcji, która będzie realizowana po instrukcji jr $ra?

3. Organizacja funkcji

3.1.    Pisząc (w języku asemblera) funkcje i programy, w których występują wywołania funkcji, należy przestrzegać pewnych reguł:

a)    Wywołujący funkcję powinien mieć możliwość przekazania jej listy argumentów (kolejność może być istotna). W ciele funkcji, dostęp do argumentów powinien być taki, jak do zmiennych lokalnych.

b)    Funkcja powinna mieć możliwość tworzenia własnych zmiennych.

c)    Wywołujący funkcję (ang. caller) i wywołana funkcja (ang. callee) muszą przestrzegać uzgodnień odnośnie do korzystania z rejestrów procesora, tak aby nie było obaw, że mogą wystąpić kolizje, prowadzące do utraty danych przechowywanych w rejestrach.

d)    Funkcja musi mieć możliwość zwrócenia (wywołującemu) wartości, będącej rezultatem jej działania.

e)    Jeśli planujemy korzystać z funkcji do implementacji algorytmów rekurencyjnych, to trzeba tak napisać funkcję, aby funkcja mogła wywołać samą siebie - bez ograniczenia głębokości zagnieżdżenia.

3.2.    Rejestry używane do przekazania argumentów i wartości zwracanych

a)    W architekturze MIPS, standardowo, do przekazania argumentów do funkcji, stosuje się rejestry $a0, $al, $a2, $a3, $a4 - jeśli trzeba przekazać więcej argumentów, to należy je przekazać poprzez pamięć (stos).

b)    Rezultat powinien być, standardowo, zwracany w rejestrach $v0, $vl (wartość typu doubleword jest zwracana w parze rejestrów).

3.3.    Podział odpowiedzialności za stan rejestrów CPU

a)    odpowiedzialność wywołującego: przed wywołaniem funkcji, należy zachować (w pamięci) stan tych spośród rejestrów $t0 do $t7, których zawartość jest istotna, i chcemy mieć pewność, że nie zostanie zmieniona przez funkcję; analogicznie, należy zadbać o stan rejestrów $a0 do $a3, oraz $v0, $vl.

b)    odpowiedzialność wywoływanego: funkcja musi, przede wszystkim, zachować stan (w pamięci) tych spośród rejestrów $s0 .. $s7, $fp, $ra, które mają być używane przez tę funkcję, w celu przechowywania w nich nowych wartości.

3.4.    Stos

a) Stos jest strukturą UFO (ang. last in first out) - zorganizowaną w pamięci, wskazywaną przez rejestr $sp (stack pointer). Dane, które trzeba przechować na stosie, odkłada się na wierzchołek (rejestr $sp zawiera adres danych leżących na wierzchołku stosu). W architekturze MIPS, stos rośnie w kierunku adresów malejących, więc przed odłożeniem na stos, należy dekrementować rejestr $sp (aby nie nadpisać danych leżących na wierzchołku).



Wyszukiwarka

Podobne podstrony:
478 A. ŻAK znaczny, a mianowicie w przeprowadzonych badaniach wykonanie niektórych manewrów wymagało
168 Współczesne trendy w zarządzaniu projektami niejszym rozdziale przeprowadzono analizę wykonalnoś
■/ przeprowadzić pomiary, J wykonać obliczenia i wykresy dla maszyny prądu stałego, •/ ocenić
rys 4 20 Rysunek 4.20. Wykonanie operacji wejścia/wyjścia z przerwaniem programu
Typ/częstotliwość kontroli BHP przeprowadzanych przez Wykonawcę: Co tydzień Codzienni Raz na
automatu. Znaczenie programu opisuje się podając, jakie operacje wykona maszyna realizująca program,
2.1. Okres technologiczny wykonania 1 operacji na 1 sztuce wyrobu prostego Okres ten składa się z cz
Reguły wyznaczania terminów wykonania operacji - reguły priorytetu Kryterium Reguły wyboru
Foto7 Operacje arytmetyczne zawsze wykonywane sq według schematu ACCU2 operacja kCCS Wynik wykonani
gd 8 W przypadku CIN III najbezpieczniej wykonać operację typu Piver I (Te Linde), ponieważ wyniki o
Asembler podstawy programowania w Windows Stanisław Kruk www.EscapeMagazi ne.pl
Złota godzina ^pTj Czas jaki upływa od momentu urazu do wykonania operacji ratujących życie (nie jes

więcej podobnych podstron