Hỏi bài môn Kĩ thuật Máy tính

Đề bài:
Cho mã C như sau:
int A[100], B[100];
for (i=1; i < 100; i++)
{
A* = A[i-1] + B*;
}
chuyển mã C này sang Assembly.
Em có tìm được bài giải như sau:
li $t0, 1 # Starting index of i
li $t5, 100 # Loop bound
loop:
lw $t1, 0($a1) # Load A[i-1]
lw $t2, 4($a2) # Load B*
add $t3, $t1, $t2 # A[i-1] + B*
sw $t3, 4($a1) # A* = A[i-1] + B*
addi $a1, 4 # Go to i+1
addi $a2, 4 # Go to i+1
addi $t0, 1 # Increment index variable
bne $t0, $t5, loop # Compare with Loop Bound
halt:
nop
Anh chị nào biết thì chỉ dùm em 2 dòng lw với ạ. Em không hiểu, nếu code ghi lw $t1, 0($a1) thì phải load a1[0] chứ sau lại a[i-1]?
Tương tự như dòng dưới là load s2[1] chứ sao b* được?

[QUOTE=15520141;359339]
Anh chị nào biết thì chỉ dùm em 2 dòng lw với ạ. Em không hiểu, nếu code ghi lw $t1, 0($a1) thì phải load a1[0] chứ sau lại a[i-1]?
Tương tự như dòng dưới là load s2[1] chứ sao b* được?[/QUOTE]
Em nhìn kĩ lại thử xem, i=1 chứ không phải bằng 0. Vòng lặp đầu tiên thì a1[i-1] = a1[0].

Chào Dũng,

  1. Trường mình không có môn học nào được gọi là Kỹ thuật Máy tính, nhưng lại có môn học Kiến trúc Máy tính. Hai cái này hoàn toàn khác nhau -> bạn tự xử.
  2. $a1, $a2 ở đâu ra thế? Không biết 2 thanh ghi này là gì thì sao mình trả lời câu hỏi của bạn được.

Thân ái,
T. Đ. Dương.

[QUOTE=11520537;359351]Chào Dũng,

  1. Trường mình không có môn học nào được gọi là Kỹ thuật Máy tính, nhưng lại có môn học Kiến trúc Máy tính. Hai cái này hoàn toàn khác nhau -> bạn tự xử.
  2. $a1, $a2 ở đâu ra thế? Không biết 2 thanh ghi này là gì thì sao mình trả lời câu hỏi của bạn được.

Thân ái,
T. Đ. Dương.[/QUOTE]
Đã nhầm còn quên nữa thì đúng là hậu đậu quá đi mất.
a1 là đc của mảng A ạ, còn a2 là đc của mảng B. Nhưng giờ em hiểu rồi anh:salute:

[QUOTE=15520141;359364]
a1 là đc của mảng A ạ, còn a2 là đc của mảng B. Nhưng giờ em hiểu rồi anh:salute:[/QUOTE]
Ờ, anh đùa thôi, tự giải đi, đi kiếm code của thằng khác mà làm gì, lỡ đâu nó cài bug cho thì hỏng cả đời.