Nhờ mọi người giúp đỡ, 2 bài tập này giải và trình bày như thế nào ? Đang mất căn bản .
Announcement
Collapse
No announcement yet.
Giải bài tập kiến trúc máy tính
Collapse
X
-
Bài 2 cũng đơn giản thôi anh, nó yêu cầu chuyển từ C-code sang MIPS Assembly-code sử dụng các thanh ghi và kỹ thuật truy cập mảng (truy cập bộ nhớ), đây là một dạng bài tập khá là cơ bản khi học chương 2 "Instructions: Language of the Computer " của môn "Computer Architecture" (thực chất nội dung là Computer Organization) ở trường ta.Tôi không hối tiếc những gì mình đã làm. Tôi chỉ hối tiếc những gì đã không làm khi có cơ hội!
Comment
-
Bài 2 em làm thế này, sai sót gì thì mọi người sửa giúp (do em code bằng tay trên giấy chứ chưa test trên simulator)
a:
lw $t1, 8($s6) //Lấy giá trị A[2] đưa vào $t1, địa chỉ của A[2] bằng địa chỉ nền của A ($s6) + 8 (vì 1 word = 4byte nên ô thứ 2 phải là 2*4)
add $s0, $s0, $t1 //Cộng giá trị A[2] với f (f nằm trong $s0) rồi đưa trở lại vào f ($s0).
b:
sll $t0, $s4, 2 //Xác định vị trí của số index j của mảng A, index là j và nằm trong $s4, 1 word 4 byte nên index trong mã mips là j*4 (thực hiện nhân 4 bằng cách dịch trái 2)
add $t0, $s6, $t0 //Lấy địa chỉ của A[j] bằng địa chỉ nền của A + index. Index vừa tính dc phía trên đang nằm trong $t0
lw $t0, 0($t0) //$t0 đang giữ địa chỉ chứa giá trị A[j], load giá trị từ địa chỉ đó vào $t0 để tí nữa thực hiện phép cộng.
tương tự như trên ta thực hiện lấy giá trị A[i] bằng 3 lệnh:
sll $t1, $s3, 2
add $t1, $s6, $t1
lw $t1, 0($t1)
add $t0, $t0, $t1 // Cộng A[j] và A[i] sau đó lưu tạm vào $t0
sw $t0, 32($s7) // Lưu giá trị sau khi cộng A[j] và A[j] vào ô nhớ thứ 32 tính từ vị trí địa chỉ trong $s7 (B). Còn vì sao là 32 thì giải thích như lúc nãy.Last edited by 12520196; 30-07-2014, 10:34.~~ Đây là chữ kí ~~
Comment
Comment