Tổng quan về bộ lệnh MIPS
Phần I: GIỚI THIỆU
- Bộ lệnh MIPS là gì? Tại sao lại phải sử dụng bộ lệnh MIPS? Chương trình nào giả lập thực thi kiến trúc lệnh MIPS? Cấu trúc chương trình, kiến trúc bộ lệnh của MIPS ra sao? Sau khi đọc xong bài này bạn sẽ nắm được phần căn bản nhất về bộ lệnh MIPS, từ đó làm nền tảng cho việc nghiên cứu sâu hơn về MIPS.
MIPS (Microprocessor without Interlocked Pipeline Stages) là một loại hợp ngữ . Đây là kiến trúc bộ lệnh dành cho hệ thống nhúng (Embedded System). Ví dụ như R2000, R3000, R6000 của MIPS32. MIPS có nhiều phiên bản như: MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 và MIPS64.
Như ta đã biết, các bộ xử lí sẽ chỉ xử lí được tập các lệnh thuộc về kiến trúc bộ lệnh của nó (tức là các lệnh đã được định sẵng trong bộ xử lí đó). Vì thế các hệ thống nhúng và một số loại siêu máy tính thuộc về kiến trúc bộ lệnh MIPS thì chỉ có thể thực hiện các chương trình thuộc kiến trúc bộ lệnh này (tức là chỉ thực thi được các chương trình viết bằng bộ lệnh MIPS) . Và đó cũng chính là lí do mà chúng ta phải học MIPS.
1. Các thanh ghi.
- Thanh ghi đa năng: 32 thanh.
- Thanh ghi dấu phẩy động: 32 thanh, có tên từ $f0 -> $f31.
- Thanh ghi HI và LO: Thao tác nhân của MIPS có kết quả chứa trong 2 thanh ghi HI và LO. Bit 0-31 thuộc LO và 32-63 thuộc HI.
Số | Tên | Ý nghĩa |
---|---|---|
$0 | $zero | Hằng số 0 |
$1 | $at | Assembler Temporary |
$2 -> $3 | $v0 -> $v1 | Giá trị trả về của hàm hoặc biểu thức |
$4 -> $7 | $a0 -> $a3 | Các tham số của hàm |
$8 -> $15 | $t0 -> $t7 | Thanh ghi tạm (không giữ giá trị trong quá trình gọi hàm) |
$16 -> $23 | $s0 -> $s7 | Thanh ghi lưu trữ (giữ giá trị trong suốt quá trình gọi hàm) |
$24 -> $25 | $t8 -> $t9 | Thanh ghi tạm |
$26 -> 27 | $k0 -> $k1 | Dự trữ cho nhân HĐH |
$28 | $gp | Con trỏ toàn cục (global pointer) |
$29 | $sp | Con trỏ Stack |
$30 | $fp | Con trỏ Frame |
$31 | $ra | Địa chỉ trả về |
- Đặc điểm:
- - Đóng vai trò như các biến trong ngôn ngữ lập trình cấp cao. Tuy nhiên, chúng khác với biến ở chỗ: trong khi biến chỉ lưu trữ đúng kiểu dữ được khai báo trước, còn thanh ghi thì không phân biệt kiểu dữ liệu (chúng đơn thuần chỉ là một dãy bit). - Đây là phần cứng nên số lượng của chúng là có hạn. Tuy nhiên, tốc độ xử lí là rất cao.
- Khi sử dụng các thanh ghi, để tránh lỗi không nên có phát sinh, nên sử dụng đúng chức năng của chúng.
- Kiến trúc bộ lệnh bao gồm 3 loại cấu trúc: R-Format, I-Fomat và J-Format. a. Cấu trúc R-Format
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
opcode | rs | rt | rd | shamt | funct | ||||||||||||||||||||||||||
6 | 5 | 5 | 5 | 5 | 6 |
- opcode: Cho biết đây là thao tác gì.funct: Kết hợp với trường opcode để xác định cần làm gì.
- Ví dụ: Khi trường opcode cho biết đây là lệnh dịch bit thì bộ xử lí sẽ nhìn vào trường funct để biết đây là dịch bíttrái hay dịch bit phải.
- Lưu ý: mỗi trường rs, rt, rd có 5 bit, chứa vừa đủ số từ 0 -> 31 biểu diễn được địa chỉ của 32 thanh ghi.
- b. Cấu trúc I-Format
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
opcode | rs | rt | imediate | ||||||||||||||||||||||||||||
6 | 5 | 5 | 16 |
- opcode: Cho biết đây là thao tác gì. rs và rt: Chứa địa chỉ các thanh ghi cần so sánh. imediate: Tên của nhãn cần nhảy tới. 2^16 => có thể nhảy được 0 -> 65,534
- c. Cấu trúc J-Format
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 |
opcode | target address | ||||||||||||||||||||||||||||||
6 | 26 |
- opcode: Cho biết đây là thao tác gì. target address: Chứa địa chỉ cần nhảy tới.
Dưới đây là 2 giáo trình về cấu trúc máy tính & hợp ngữ và một vài tài liệu sưu tầm trên Internet. Các bạn có thể xem thêm cho những phần bài giảng của thầy chưa được rõ.
1.Hai giáo trình của thầy Mạnh : Tại Đây2.Giáo trình Bảng Karnaught : Tại Đây
3.Bài giảng hợp ngữ: Tại Đây.
3.Bài giảng hợp ngữ: Tại Đây.
Tham khảo giáo trình Cấu trúc máy tính và hợp ngữ của Trường ĐH KHTN TP.HCM Thầy Phạm Tuấn Sơn
0 nhận xét:
Đăng nhận xét