עבור לתוכן

לולאה MIPS

Featured Replies

פורסם

רוצה לממש את הלולאה הבאה:


for (int i=0; i<5; i++(
k[i= i+5;]

אני יודעת לבדוק את התנאי i<5 ולבצע את הקפיצה.

איך מבצעים את ההצבה?

<i נמצא ברגיסטר $0,

k נמצא ברגיסטר $1>

פורסם

ברגיסטר 0? לא יכול להיות, מכיוון ששם תמיד יש 0. בכל מקרה, הייתי עושה משהו כזה.

addi $2, $1, 20

sub $0, $0, $0

loop:

sw $0, 0[$1]

addi $1, $1, 4

addi $0, $0, 1

bne $1, $2, loop

פורסם
  • מחבר

והסבר???

למה ADDI?

פורסם

אני מוסיף 20 מכיוון שזה- 5מילים * 4בתים כל מילה(INT).

בסוף אני בודק אם הגעתי ל- 20 הזה, ואם כן, יוצא מהלולאה.

פורסם
  • מחבר

זה לא יצא ברור,

אבל זה לא מה שאני צריכה...

אני צריכה לעבור בלולאה 5 פעמים (מ i=0 עד i=5 )

וכל פעם לעדכן את ערך K במיקום i במערך שיהיה שווה ל i+5

פורסם

אני בודק מה זה k[5](איזה מקום זה בזיכרון), ואם הגעתי למקום הזה, אני יוצא מהלולאה.

פורסם
  • מחבר

יש לי בעיה בתכנית הבאה:


.data
iInt: .word 0
jInt: .word 0
kArray: .space 10


.text
main:

li $s0, 3
lw $s1, iInt
lw $s2, jInt
lw $s5, kArray


li $s6, 1
li $s7, 10



Loop: slt $s6, $s1, $s7
beq $s6, $zero, Exit


mult $s1, $s0
mflo $t1
add $s2, $s2, $t1


li $v0, 1
move $a0, $s2
syscall


add $t2, $s1, $s1
add $t2, $t2, $t2
add $t1, $t2, $s5

lw $t0, 0($t2)



addi $s1, $s1, 1
j Loop


Exit:

התכנית אמורה לעשות:



for(int i-0; i<10; i++)
{
j+ = i*3;
k[i] = j;
}

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים