Professional Documents
Culture Documents
1) Đối với câu lệnh C sau, mã MIPS tương ứng là gì? Giả sử các biến i và j được gán cho các
thanh ghi tương ứng $s0 và $s1. Giả sử địa chỉ cơ sở của các mảng A và B lần lượt nằm
trong các thanh ghi $s6 và $s7: B[8]=A[i-j];
GIẢI:
B[8]=A[i-j]; chuyển sang mã MIPS là:
2) Đối với các lệnh MIPS sau, câu lệnh C tương ứng là gì? Giả sử các biến f và g được gán
cho các thanh ghi tương ứng $s0 và $s1. Giả sử địa chỉ cơ sở của các mảng A và B lần lượt
nằm trong các thanh ghi $s6 và $s7:
GIẢI:
B[g]=A[f+1]+A[f];
f=A[f];
3) Đối với các lệnh MIPS trong Bài tập 2, hãy viết lại các lệnh để giảm thiểu số lượng các mã
MIPS (nếu có thể) cần để thực hiện chức năng tương tự.
GIẢI:
Viết lại các lệnh MIPS để giảm số lượng các mã MIPS, thực hiện chức năng tương tự:
5) Dịch mã C sau sang mã MIPS. Sử dụng một số lượng lệnh tối thiểu. Giả sử các giá trị của a,
b, i và j lần lượt nằm trong các thanh ghi $s0, $s1, $t0 và $t1. Ngoài ra, giả sử thanh ghi $s2
giữ địa chỉ cơ sở của mảng D:
6) Chuyển đổi chương trình mã máy sau sang các lệnh của mã MIPS:
00011010010000000000000000000011
00100000000000000000000000000000
10101110001010110000000000000000
10101110001010100000000000000010
00100001001010010000000000001000
GIẢI:
𝐶ℎ𝑢𝑦ể𝑛 𝑠𝑎𝑛𝑔 𝑚ã 𝑀𝐼𝑃𝑆
00011010010000000000000000000011 → blez $s2, label
nop
nop
nop
label: nop
7) Giả lệnh không phải là một phần của tập lệnh MIPS nhưng thường xuất hiện trong các
chương trình MIPS. Trình biên dịch sau đó phải chuyển đổi chúng thành một tập hợp nhỏ
các lệnh MIPS. Đối với mỗi giả lệnh sau đây, hãy chuyển chúng thành một chuỗi tương
đương rất ngắn của các lệnh MIPS. Thanh ghi tạm thời là $at:
Lưu ý, “small” là một hằng số 16 bit( tức là đủ nhỏ cho trường trực tiếp của một lệnh) và
“big” là một hằng số 32 bit( tức là đủ dài cho trường tức thời)
GIẢI:
Thực hiện các giả lệnh:
9) Tìm chuỗi lệnh MIPS ngắn nhất xuất các bit từ 16 xuống 11 từ thanh ghi $t0 và sử dụng giá
trị của trường này để thay thế các bit từ 31 xuống 26 trong thanh ghi $t1 mà không thay đổi
26 bit khác của thanh ghi $t1.
GIẢI:
Chuỗi lệnh MIPS thực hiện các nhiệm vụ trên là:
10) Chỉ ra cách giá trị 0xabcdef12 sẽ được sắp xếp trong bộ nhớ của một little-endian và big-
endian. Giả sử dữ liệu được lưu trữ bắt đầu từ địa chỉ 0.
GIẢI:
Cách sắp xếp giá trị 4 byte 0xabcdef12 trong bộ nhớ là: