Pytania: a) Z jakich etykiet składa się program? Podaj ich nazwy.
b) Co to jest za instrukcja "syscall" ? Od czego zależy jej wynik działania? Jakie działania wykonuje w powyższym programie?
c) Która linia jest odpowiedzialna za koniec programu? Odpowiedź uzasadnij.
d) Jak program zachowa się wykonując linię 22. Odpowiedź uzasadnij.
2) Na podstawie programu z zadania 1 napisać funkcję przyjmującą dwa parametry wejściowe która zwraca sumę liczb. W ciele funkcji powinien być również kod odpowiedzialny za wyświetlenie wyniku dodawania na konsoli.
a) Program składa się z etykiet: "string1", "string2", "main", "function".
b) Instrukcja "syscall" jest instrukcją systemową, która pozwala programowi na wykonywanie operacji systemowych, takich jak wyświetlanie tekstu na ekranie lub wejście/wyjście pliku. Wynik działania instrukcji "syscall" zależy od numeru operacji systemowej, który jest przechowywany w rejestrze $v0. W powyższym programie instrukcja "syscall" jest używana do wyświetlania tekstu na ekranie, przy czym tekst jest przechowywany w rejestrze $a0.
c) Linia "li $v0, 10" jest odpowiedzialna za koniec programu, ponieważ instrukcja "syscall" z numerem 10 kończy program.
d) Wykonanie linii "jr $ra" powoduje powrót do ostatniego punktu wykonywania programu przed wejściem do funkcji "function". W powyższym przypadku program powróci do linii po instrukcji "jal function" i kontynuować wykonywanie programu z instrukcją "li $v0, 4" syscall.
2..text
sum_and_print:
#deklaracja parametrow wejsciowych
addi $a0, $0, $a0
addi $a1, $0, $a1
#dodawanie parametrow wejsciowych
add $t0, $a0, $a1
#wyświetlenie wyniku
li $v0, 1
syscall
#zwracanie sumy
jr $ra
Funkcja przyjmuje dwa parametry wejściowe ($a0 i $a1) i zwraca sumę liczb za pomocą rejestru $t0. Jest również kod odpowiedzialny za wyświetlenie wyniku dodawania na konsoli (li $v0, 1 syscall).
Odpowiedź:
a) Program składa się z etykiet: "string1", "string2", "main", "function".
b) Instrukcja "syscall" jest instrukcją systemową, która pozwala programowi na wykonywanie operacji systemowych, takich jak wyświetlanie tekstu na ekranie lub wejście/wyjście pliku. Wynik działania instrukcji "syscall" zależy od numeru operacji systemowej, który jest przechowywany w rejestrze $v0. W powyższym programie instrukcja "syscall" jest używana do wyświetlania tekstu na ekranie, przy czym tekst jest przechowywany w rejestrze $a0.
c) Linia "li $v0, 10" jest odpowiedzialna za koniec programu, ponieważ instrukcja "syscall" z numerem 10 kończy program.
d) Wykonanie linii "jr $ra" powoduje powrót do ostatniego punktu wykonywania programu przed wejściem do funkcji "function". W powyższym przypadku program powróci do linii po instrukcji "jal function" i kontynuować wykonywanie programu z instrukcją "li $v0, 4" syscall.
2..text
sum_and_print:
#deklaracja parametrow wejsciowych
addi $a0, $0, $a0
addi $a1, $0, $a1
#dodawanie parametrow wejsciowych
add $t0, $a0, $a1
#wyświetlenie wyniku
li $v0, 1
syscall
#zwracanie sumy
jr $ra
Funkcja przyjmuje dwa parametry wejściowe ($a0 i $a1) i zwraca sumę liczb za pomocą rejestru $t0. Jest również kod odpowiedzialny za wyświetlenie wyniku dodawania na konsoli (li $v0, 1 syscall).