Professional Documents
Culture Documents
MIPS Asembler Zadaci 1 PDF
MIPS Asembler Zadaci 1 PDF
sub rr, r1, r2 oduzimanje vrijednosti iz registara (r1-r2) i smijetanje rezultata u registar rr
add rr, r1, r2 sabiranje vrijednosti iz registara (r1+r2) i smijetanje rezultata u registar rr
lw rr, N(ri) load word uitavanje u registar rr i-tog elementa niza koji poinje od adrese N; ri je
registar koji sadri vrijednost i.
sw rr, N(ri) save word uitavanje iz registra rr u i-ti element niza koji poinje od adrese N; ri je
registar koji sadri vrijednost i.
# - komentar, traje do kraja tekueg reda.
slt rr, r1, r2 store less than uporeuje vrijednosti u r1 i r2, ukoliko je r1<r2, u rr se smijeta 1;
ako nije onda se u rr smijeta 0
beq r1, r2, lbl branch equal uporeuje vrijednosti u r1 i r2, ukoliko je r1=r2 skae na marker
lbl, ako nije onda se nastavlja sa izvravanjem naredne linije koda
j lbl jump bezuslovno skae na marker lbl
Prilikom postavljanja, marker se pie na poetku linije, prije koda, i razdvaja od koda sa :. Kada se
u okviru koda poziva marker, pie se samo njegov naziv, bez :.
1. Date su sljedee naredbe u programskom jeziku C. Napisati ih u MIPS asemblerskom jeziku pod
pretpostavkom da su promjenjivima a, b, c i d dodijeljeni registri $16, $17, $18 i $19,
respektivno.
a) a = bcd;
Ovo se ne moe sabrati direktno zbog toga to MIPS aritmetike instrukcije imaju tano 3
operanda, pa emo prvo oduzeti c od b, pa od toga kasnije oduzeti d, tj.: a = (bc)d.
Koristiemo privremeni registar $8 za smijetanje meurezultata b-c.
Jedna razlika u odnosu na vie programske jezike je da su operandi MIPS instrukcija registri, kojih
u naem sluaju ima 32 (u oznaci $0, $1, ..., $31), a operandi viih jezika su promjenljive, kojih moe
biti proizvoljno mnogo. Duina registara, kao i duina jedne memorijske rijei, je takoe 32 bita.
Druga razlika u odnosu na veinu viih programskih jezika je da MIPS kod potuje pravilo
programske linije, tj. svaka instrukcija MIPS koda se nalazi u zasebnom redu. Sa druge strane,
komentari se zavravaju na kraju reda u kojem poinju.
b) a = b;
a=b emo napisati kao a=b+0, a 0 dobijamo kao sadraj registra $0 (programer ne moe
promijeniti sadraj registra $0)
Na ovaj nain smo doli do instrukcije move $16, $17 koja kopira sadraj jednog registra u drugi.
Iako nije hardverski implementirana, MIPS asembler prihvata ovu instrukciju. Ovakve instrukcije
se nazivaju pseudoinstrukcijama.
c) a = a;
a emo napisati kao 0-a, pa imamo:
d) a=0
a=0 emo dobiti kao a=0+0:
Napisati ovu naredbu u MIPS asemblerskom jeziku pod pretpostavkom da su poetne adrese nizova
A, B i C - 1000, 1400 i 1800, respektivno. Pretpostaviti da registar $18 sadri vrijednost 4*i.
Kao privremene registre koristiti $19 i $20.
3. Dat je dio koda u programskom jeziku C kojim se vri sabiranje prvih 100 prirodnih brojeva:
s=0;
i=0;
while (i<101) {
s=s+i;
i=i+1;
}
Napisati ovaj dio koda u MIPS asemblerskom jeziku pod pretpostavkom da su promjenjivima s i i
dodijeljeni registri $15 i $16, respektivno, dok su konstante 101 i 1 smjetene u registre $20 i $21.