Announcement

Collapse
No announcement yet.

Giải bài tập kiến trúc máy tính

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Giải bài tập kiến trúc máy tính

    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 .
    Đời sinh viên qua lâu quá rồi keke

  • #2
    Bài 1 đọc kỹ lại thì hình như chỉ ra cái nào là toán hạng nào là bộ nhớ, thanh ghi, hằng số thôi thì phải . Bài 2 thì không biết giải và giải thích như thế nào
    Đời sinh viên qua lâu quá rồi keke

    Comment


    • #3
      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


      • #4
        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

        LHQC

        Collapse
        Working...
        X