Announcement

Collapse
No announcement yet.

Giúp giải dùm bài kiến trúc máy tinh đơn giản

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

  • Giúp giải dùm bài kiến trúc máy tinh đơn giản

    Bài tiếng anh nên mình mạn phép đăng lên đây, bạn nào biết giải giúp mình .

    Bài 1:

    The following problems explore translating from C to MIPS. Assume that the variables f, g, h, i, and j
    are given and could be considered 32-bit integers as declared in a C program.

    a.
    f = g + h + i + j
    b.
    f = g + ( h + 5)


    For the C statements above, what is the corresponding MIPS assembly code? Use a minimal number
    of MIPS assembly instructions.
    For the C statements above, how many MIPS assembly instructions are needed to perform the C
    statement?
    If the variables f, g, h, i, and j have values 1, 2, 3, 4, and 5, respectively, what is the end value of f?
    Đời sinh viên qua lâu quá rồi keke

  • #2
    a)
    add f,g,h
    add f,f,i
    add f,f,j
    => 3 assemply instructions
    f= 14

    b)
    addi f, h, 5
    add f, f, g
    => 2 assemply instructions
    f= 10

    Chúc anh thi tốt!

    Comment


    • #3
      Có thể giúp a giải bài này nữa đc không, anh ngu môn này lắm rồi :

      Bài 2:

      The following problems deal with translating from C to MIPS. Assume that the variables f, g, h, i, and
      j are assigned to registers $s0, $s1, $s2, $s3, and $s4, respectively. Assume that the base address of
      the arrays A and B are in registers $s6 and $s7, respectively. Assume that the elements of the arrays A
      and B are 4-byte words:
      a. f = g + h + B[4]
      b. f = g – A[B[8]]

      1. For the C statements above, what is the corresponding MIPS assembly code?
      2. For the C statements above, how many MIPS assembly instructions are needed to perform the C
      statement?
      3. For the C statements above, how many registers are needed to carry out the C statement using MIPS
      assembly code?

      The following problems deal with translating from MIPS to C. Assume that the variables f, g, h, i, and
      j are assigned to registers $s0, $s1, $s2, $s3, and $s4, respectively. Assume that the base address of
      the arrays A and B are in registers $s6 and $s7, respectively.
      a.
      add $s0, $s0, $s1
      add $s0, $s0, $s2
      add $s0, $s0, $s3
      add $s0, $s0, $s4
      b.
      lw $s0, 4($s6)

      4. For the MIPS assembly instructions above, what is the corresponding C statement?
      5. For the MIPS assembly instructions above, rewrite the assembly code to minimize the number if
      MIPS instructions (if possible) needed to carry out the same function.
      6. How many registers are needed to carry out the MIPS assembly as written above? If you could
      rewrite the code above, what is the minimal number of registers needed?
      Đời sinh viên qua lâu quá rồi keke

      Comment


      • #4
        ^
        Có file bài giải của những bài này trên Moodle rồi mà anh!
        u should run..

        Comment


        • #5
          bài 2/
          a)
          lw $t0, 16($s7)
          add $t0, $t0, $s2
          add $s0, $t0, $s1
          => 3 assemplu instructions, 5 registers ($t0, $s0,1,2,7)


          b)
          lw $t0, 32($s7)
          sll $t0, $t0, 2
          add $t0, $t0, $s7
          lw $t0, 0($t0)
          sll $t0, $t0, 2
          add $t0, $t0, $s6
          lw $t0, 0($t0)
          sub $s0, $s1, $t0
          => 8 assemply instructions, 5 registers ($t0, $s0,1,6,7)


          bài 3/ phần rút gọn câu 5 bó tay, vậy là quá gọn rồi
          a)
          f=f+g+h+i+j

          b)
          f=A[1]

          :salute:

          Comment


          • #6
            Originally posted by 12520162 View Post
            ^
            Có file bài giải của những bài này trên Moodle rồi mà anh!
            File ở đâu hả em cho anh đường dẫn cái.
            Đời sinh viên qua lâu quá rồi keke

            Comment


            • #7
              **Thắc mắc bài của bạn này:
              bài 2/
              a)
              lw $t0, 16($s7)
              add $t0, $t0, $s2
              add $s0, $t0, $s1
              => 3 assemplu instructions, 5 registers ($t0, $s0,1,2,7)
              thanh ghi $s7 là base address nếu bạn dùng như vậy thì nó giống với thanh ghi $sp mất rồi?
              Với lại cái đề bài nó không cho biết khởi tạo mảng B bao nhiêu giá trị, chỉ biết là lấy giá trị tại vị trí 4 trong mảng.
              Trong asm nếu bạn khai báo thì compiler sẽ chỉ định một vùng cho bạn lưu trử mảng đó, còn nếu khai báo và khởi tạo giá trị thì sẽ khởi tạo một vùng đồng thời đưa các giá trị khởi tạo vào và lúc này stack pointer sẽ nằm tại đáy của stack rồi. Nếu mảng B khởi tạo 10 giá trị thì sao??? Lúc này stack pointer sẽ nằm tại đáy của stack. Vậy nếu muốn lấy vị trí 4 thì bạn phải lùi con trỏ này về tại vị trí 4 và đọc giá trị tại đó.
              Nếu chỉ khai báo mà chưa khởi tạo thì con trỏ tại vị trí 0 nếu muốn đọc giá trị tại vị trí 4 bạn phải đưa con trỏ lên vị trí đó và đọc giá trị ra.
              Base address giống như là một cái mốc, là một ví trí cố định gúp bạn có thể tính các địa chỉ khác dựa vào nó
              thân!

              Email: sinhngoc.nguyen@gmail.com
              Skype: sinhngoc.nguyen
              ĐT: 0974117946

              Comment


              • #8
                sắp thi rồi :beatbrick:
                Last edited by 12520765; 12-10-2013, 12:26. Reason: 12

                Comment


                • #9
                  cho mình hỏi cấu trúc đề thi giưã kì kiến trúc máy tính như thế nào vậy ,mọi người ?
                  ta lại cười ! cười trên nỗi buồn và trên niềm vui của ta !

                  Comment


                  • #10
                    Originally posted by 11520027 View Post
                    cho mình hỏi cấu trúc đề thi giưã kì kiến trúc máy tính như thế nào vậy ,mọi người ?
                    Chương 1 - 1 câu
                    Chương 2 - 2 câu
                    Chương 3 - 1 câu
                    nghe cô nói vậy chứ ko nói gì thêm nữa
                    Hãy cứ sống một cách thật tuyệt vời, rồi những điều tốt đẹp sẽ đến với bạn !!

                    Comment


                    • #11
                      Originally posted by 12520333 View Post
                      Chương 1 - 1 câu
                      Chương 2 - 2 câu
                      Chương 3 - 1 câu
                      nghe cô nói vậy chứ ko nói gì thêm nữa
                      Thi đề mở hay đóng vậy bạn..ngu môn này lắm rồi

                      Comment


                      • #12
                        Originally posted by 11520706 View Post
                        Thi đề mở hay đóng vậy bạn..ngu môn này lắm rồi
                        Đề mở nha anh. được cầm máy tính casio , không dùng laptop. smartphone

                        Comment


                        • #13
                          đề mở mà ko đk dùng laptop với đt ak

                          Comment


                          • #14
                            Originally posted by 10520413 View Post
                            bài 2/
                            a)
                            lw $t0, 16($s7)
                            add $t0, $t0, $s2
                            add $s0, $t0, $s1
                            => 3 assemplu instructions, 5 registers ($t0, $s0,1,2,7)


                            b)
                            lw $t0, 32($s7)
                            sll $t0, $t0, 2
                            add $t0, $t0, $s7
                            lw $t0, 0($t0)
                            sll $t0, $t0, 2
                            add $t0, $t0, $s6
                            lw $t0, 0($t0)
                            sub $s0, $s1, $t0
                            => 8 assemply instructions, 5 registers ($t0, $s0,1,6,7)


                            bài 3/ phần rút gọn câu 5 bó tay, vậy là quá gọn rồi
                            a)
                            f=f+g+h+i+j

                            b)
                            f=A[1]

                            :salute:
                            Mình ko hiểu lắm phần câu 2b
                            Last edited by 12520816; 17-10-2013, 20:16.
                            :stick::stick:

                            Comment


                            • #15
                              Originally posted by 12520816 View Post
                              Mình ko hiểu lắm phần câu 2b
                              b. f = g – A[B[8]]
                              Assume that the variables f, g, h, i, and
                              j are assigned to registers $s0, $s1, $s2, $s3, and $s4, respectively. Assume that the base address of
                              the arrays A and B are in registers $s6 and $s7, respectively

                              Câu 2 b là câu mảng trong mảng. bạn tưởng tượng trong MIPS thì lấy 1 phần tử trong mảng sẽ nhân chỉ số của phần tử đó với 4 rồi cộng thêm địa chỉ nền của mảng đó. Ví dụ: f=A[4] => lw $s0,16($s6).

                              Trong câu b bạn lưu B[8] vào thanh ghi tạm bất kỳ, sau đó nhân thêm 4 rồi cộng với địa chỉ nền của mảng A là được. Nhân thêm 4 tương đương với dịch trái (sll) 2 bit.

                              Câu b giải như sau:

                              lw $t0,32($s7) # lấy phần tử thứ 8 từ mảng B
                              sll $t0,$t0,2 # nhân địa chỉ thanh ghi $t0 cho 4
                              add $t0,$t0,$s6 #cộng địa chỉ thanh ghi $t0 cho thanh ghi $s6
                              lw $t1,0($t0) #lưu giá trị của phần tử A[B[8]] cho thanh ghi $t1 (thanh ghi tạm )
                              sub $s0,$s1,$t1 #trừ theo đề cho f=g-A[B[8]]

                              Comment

                              LHQC

                              Collapse
                              Working...
                              X