2013-10-12 20 views
5

Biorę kurs uniwersytecki w dziedzinie architektury komputerowej, więc jestem nowy w języku asemblera. Moje pytanie brzmi: jak mogę przetłumaczyć poniższy kod z C na język asemblera MIPS bez użycia pseudoinstrukcji?Tłumaczenie pojedynczej linii C na zespół MIPS

B [8] = A [i-j] 

i oraz j są przypisane do rejestrów $ S3 i S4 $ i adresu bazowego A i B są w rejestrach $ S6 i S7 $. Do tej pory mam:

sub $t0, $s3, $s4 
sll $t0, $t0, 2 
lw $t1, $t0($s6) #Is this line allright? 
add $s5, $t1, $zero 
sw $s5, 32($s7) 

Nie jestem pewien co do użycia rejestru $ t0 jako przesunięcia w adresowaniu pamięci w trzecim wierszu. Z góry dziękuję.

Odpowiedz

8

Nie Zamiast tego obliczyć potrzebny adres, dodając $ t0 do $ s6.

sub $t0, $s3, $s4 
sll $t0, $t0, 2 
add $t0, $t0, $s6 
lw $t1, 0($t0) 
sw $t1, 32($s7) 
+0

Dziękuję bardzo. To było pomocne! –

+0

Miło słyszeć i witam w SO. Jeśli mój post był dla ciebie pomocny, jest to zwyczajem, że akceptujesz i popierasz odpowiedź. –

+0

OK, już zaakceptowany, ale nie można odebrać ze względu na moją niską reputację. –