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

  • 09520027
    replied
    Đề mở thì nên in tài liệu nào ra nhỉ

    Leave a comment:


  • 12520332
    replied
    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]]

    Leave a comment:


  • 12520816
    replied
    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.

    Leave a comment:


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

    Leave a comment:


  • 12520078
    replied
    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

    Leave a comment:


  • 11520706
    replied
    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

    Leave a comment:


  • 12520333
    replied
    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

    Leave a comment:


  • 11520027
    replied
    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 ?

    Leave a comment:


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

    Leave a comment:


  • 09520581
    replied
    **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!

    Leave a comment:


  • 09520027
    replied
    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.

    Leave a comment:


  • 10520413
    replied
    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:

    Leave a comment:


  • 12520162
    replied
    ^
    Có file bài giải của những bài này trên Moodle rồi mà anh!

    Leave a comment:


  • 09520027
    replied
    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?

    Leave a comment:


  • 10520413
    replied
    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!

    Leave a comment:

LHQC

Collapse
Working...
X