7163313947

7163313947



3.6.


Zadanie 2

a) Wprowadzić następujący program

#    program główny, main(), sam jest funkcją

#    więc najpierw trzeba utworzyć ramkę stosu

#    drukować pierwszy łańcuch


.data

stringl:    .asciiz "Hello world!\n"

string2:    .asciiz "Drugi tekst\n"

.text

main:    subu $sp, $sp, 24

sw $ra, 20($sp)

la $a0, stringl li $v0, 4 syscall

sw $a0, 0($sp) jal function lw $a0, 8($sp)

li $v0, 4 li $v0, 10

#    zachować w ramce stan rejestru $a0

#    wywołać funkcję o nazwie function

#    odtworzyć rejestr $a0

#    powtórnie drukować pierwszy łańcuch

# exit (tutaj nie ma potrzeby niszczyć ramki)


function:    subu $sp, $sp, 24

sw $ra, 20($sp)

la $a0, string2 li $v0, 4

lw $ra, 20($sp) addu $sp, $sp, 24 jr $ra

# utworzyć ramkę stosu # drukować drugi łańcuch

#    zrekonstruować adres powrotny

#    zniszczyć ramkę stosu

#    powrót do wywołującego

b) Wykonać program krokowo; prześledzić operacje na stosie, zmieniający się stan stosu, zrozumieć i zapamiętać, jak działa stos, jak utworzyć ramkę stosu, jak należy organizować funkcje.

4. Zmienne lokalne

4.1. Zmienne lokalne funkcji przechowuje się na stosie, w ramce stosu. Zmienne te mają więc charakter dynamiczny, gdyż w odróżnieniu od zmiennych statycznych (które są przechowywane w segmencie .data), zmienne lokalne nie zajmują pamięci przez cały czas wykonywania programu: istnieją (i można w nich przechowywać wartości) od chwili utworzenia ramki do czasu zniszczenia ramki stosu.

a)    W prologu funkcji, zmienne lokalne tworzy się następująco:

•    należy zwiększyć rozmiar ramki stosu tak, aby utworzyć miejsce do przechowania w niej wszystkich zmiennych lokalnych

•    należy zdecydować, gdzie w ramce stosu mają rezydować poszczególne zmienne (jaki jest ich adres względem początku ramki stosu).

b)    Do adresowania zmiennych lokalnych można wykorzystać rejestr $fp (wskaźnika ramki stosu), do którego można wpisać adres początkowy ramki (oczywiście, przed tą operacją, należy zachować na stosie zastaną zawartość rejestru $fp, a w epilogu funkcji zrekonstruować $fp).



Wyszukiwarka

Podobne podstrony:
Zadanie 5 Opisz jaki program nauczania gimnastyki korekcyjnej jest realizowany w
egz zestaw 1 Egzamin z przedmiotu „ wprowadzenie do programowania”. WAT, dnia 03.02.2006. Czas 45’.
egz zestaw 2 Egzamin z przedmiotu „ wprowadzenie do programowania Czas 45’. WAT, dnia 03.02.2006. Ze
7b (3) I Zadanie 3. (lOp.) Dany jest następujący program: int f(int i) { if(x>0) return x+f(x-l);
8b (3) Zadanie 3. (lOp.) Dany jest następujący program: function F (x :    integer)
1.15-3. /udania 1.15.3.1. Zadanie Dl Uruchom program DEBUG i wykonaj następujące polecenia: 1.
PRZEDSIĘBIORCZOŚĆ - ROZWÓJ - PRACA2. CELE I ZADANIA PROGRAMU Głównym celem Programu jest zdecydowane
wdp jpeg Egzamin z przedmiotu „ wprowadzenie do programowania W A T, dnia 03.02.2006. Czas 45’. Zes
ĆWICZENIE 2PROGRAM PRODUKCYJNY ł. WPROWADZENIE, CEL I ZADANIA DO WYKONANIA Program produkcyjny wyrob
Głównym zadaniem wyżej opisanych programów jest praca z danymi liczbowymi: programy do pomiarów wspo
DSC54 Zadania prymame I dualne programowania liniowego charakteryzują się następującymi własnościam
DSC59 Zadania prymamc I dualne programowania liniowego charakteryzują się następującymi własnościam
fm group ulotka firmowa str1 MERCEDESEM PO SUKCESPROGRAMYMOTYWACYJNE FM GROUP cyklicznie wprowadza z

więcej podobnych podstron