Bài giảng Kiến trúc máy tính - Chương 3, Phần 3: Hợp ngữ MIPS - Võ Tấn Phương

dce  
2015  
KIẾN TRÚC MÁY TÍNH  
KHOA HỌC & KỸ THUẬT MÁY TÍNH  
BK  
TP.HCM  
Võ Tấn Phương  
dce  
2015  
Chapter 3.2  
Hợp ngữ MIPS  
(Assembly Language)  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
2
dce  
2015  
Nội dung  
Các phát biểu trong hợp ngữ MIPS  
Khung dạng chương trình hợp ngữ MIPS  
Định nghĩa/khai báo dữ liệu  
Địa chỉ bắt đầu (alignment) và thứ tự các byte trong bộ nhớ  
Các hàm hệ thống  
Thủ tục/hàm  
Truyền tham số và Runtime Stack  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
3
dce  
2015  
Các phát biểu trong hợp ngữ MIPS  
Có 3 loại phát biểu trong hợp ngữ MIPS  
Bình thường một phát biểu là một dòng  
1. Các lệnh thật  
Là các lệnh trong tập lệnh của bộ xử lý MIPS  
Tương ứng một lệnh dạng mã máy (số 32 bit)  
2. Lệnh giả (Pseudo-Instructions) và Macros  
Được chuyển sang các lệnh thật bởi assembler  
Mục đích giảm công sức cho lập trình viên  
3. Các chỉ thị (directive) của Assembler  
Cung cấp thông tin để assembler dịch chương trình  
Dùng để định nghĩa phân đoạn, cấp phát dữ liệu bộ nhớ  
Không thực thi được: chỉ thị không phải là lệnh  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
4
dce  
2015  
Phát biểu loại lệnh  
Lệnh hợp ngữ có định dạng:  
[label:] mnemonic [operands]  
[#comment]  
Label: (optional)  
Đánh dấu vị trí gợi nhớ của lệnh, phải có dấu ‘:’  
Nhãn thường xuất hiện trong phân đoạn dữ liệu và mã  
Mnemonic  
Xác định phép toán (vd: add, sub, vv.)  
Operands  
Xác định toán hạn nguồn, đích của phép toán  
Toán hạn có thể là thanh ghi, ô nhớ, hằng số  
Thông thường một lệnh có 3 toán hạn  
L1: addiu $t0, $t0, 1  
#increment $t0  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
5
dce  
2015  
Chú thích (Comments)  
Chú thích rất quan trọng!  
Giải thích mục đích của chương trình  
Giúp việc đọc hiểu chương trình dễ dàng khi viết và xem lại  
bởi chính mình và người khác  
Giải thích dữ liệu vào, ra  
Chú thích cần thiết ở đầu mỗi thủ tục/hàm  
. Chỉ ra đối số, kết quả của thủ tục/hàm  
. Mô tả mục đích của thủ tục/hàm  
Chú thích trên một dòng  
Bắt đầu với ký tự #  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
6
dce  
2015  
Tiếp theo …  
Các phát biểu trong hợp ngữ MIPS  
Khung dạng chương trình hợp ngữ MIPS  
Định nghĩa/khai báo dữ liệu  
Địa chỉ bắt đầu (alignment) và thứ tự các byte trong bộ nhớ  
Các hàm hệ thống  
Thủ tục/hàm  
Truyền tham số và Runtime Stack  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
7
dce  
2015  
Khung dạng mẫu của chương trình hợp ngữ  
# Title:  
Filename:  
Date:  
# Author:  
# Description:  
# Input:  
# Output:  
################# Data segment #####################  
.data  
. . .  
################# Code segment #####################  
.text  
.globl main  
main:  
# main program entry  
# Exit program  
. . .  
li $v0, 10  
syscall  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
8
dce  
2015  
Chỉ thị .DATA, .TEXT, & .GLOBL  
Chỉ thị .DATA  
Định nghĩa phân đoạn dữ liệu (data segment)  
Các biến của chương trình được định nghĩa tại vùng này  
Assembler sẽ cấp phát và khởi tạo các biến này  
Chỉ thị .TEXT  
Định nghĩa phân đọa mã (code segment) của một chương  
trình và chứa các lệnh  
Chỉ thị .GLOBL  
Khai báo ký hiệu toàn cục (global)  
Các ký hiệu toàn cục có thể kham khảo ở các file khác nhau  
Ký hiệu hàm main dùng chỉ thị toàn cục  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
9
dce  
2015  
Phân chia phân đoạn của chương trình  
0x7FFFFFFF  
Stack Grows  
Stack Segment  
Downwards  
Memory  
Addresses  
in Hex  
Dynamic Area  
Static Area  
Data Segment  
0x10000000  
Text Segment  
Reserved  
0x04000000  
0
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
10  
dce  
2015  
Tiếp theo …  
Các phát biểu trong hợp ngữ MIPS  
Khung dạng chương trình hợp ngữ MIPS  
Định nghĩa/khai báo dữ liệu  
Địa chỉ bắt đầu (alignment) và thứ tự các byte trong bộ nhớ  
Các hàm hệ thống  
Thủ tục/hàm  
Truyền tham số và Runtime Stack  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
11  
dce  
2015  
Phát biểu khai báo dữ liệu  
Nằm trong phân đọa dữ liệu .DATA  
Đánh dấu ô nhớ tương ứng với tên và dữ liệu khởi tạo  
Cú pháp:  
[name:] directive initializer [, initializer] . . .  
var1: .WORD 10  
Các giá trị khởi tạo chuyển thành dạng dữ liệu nhị phân  
trong vùn nhớ dữ liệu tương ứng  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
12  
dce  
2015  
Các chỉ thị kiểu dữ liệu (Data Directives)  
.BYTE  
Mỗi giá trị là 1 ô nhớ (8-bit, 1 byte)  
.HALF  
Mỗi giá trị là 2 ô nhớ (16-bit, 2 byte), có địa chỉ bắt đầu chi  
hết cho 2 (half align)  
.WORD  
Mỗi giá trị là 4 ô nhớ (32-bit, 4 byte), có địa chỉ bắt đầu chi  
hết cho 4 (word align)  
.FLOAT  
Mỗi giá trị là 4 ô nhớ số thực dấu chấm động đơn  
.DOUBLE  
Mỗi giá trị là 8 ô nhớ số thực dấu chấm động kép  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
13  
dce  
2015  
Các chỉ thị về chuỗi (String Directives)  
.ASCII  
Cấp phát các ô nhớ 1 byte cho chuỗi ASCII  
.ASCIIZ  
Giống với chỉ thị .ASCII, nhưng thêm ký tự NULL tại vị trí  
kết thúc chuỗi  
Ký tụ NULL có giá trị bằng 0, đánh dấu kết thúc chuỗi  
.SPACE  
Cấp phát n ô nhớ 1 byte không khởi tạo giá trị trong vùng  
nhớ dữ liệu  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
14  
dce  
2015  
Ví dụ khai báo biến  
.DATA  
var1: .BYTE  
var2: .HALF  
var3: .WORD  
var4: .FLOAT  
'A', 'E', 127, -1, '\n'  
-10, 0xffff  
0x12345678:100  
12.3, -0.1  
Array of 100 words  
var5: .DOUBLE 1.5e-10  
str1: .ASCII "A String\n"  
str2: .ASCIIZ "NULL Terminated String"  
100 bytes (not initialized)  
array: .SPACE  
100  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
15  
dce  
2015  
Tiếp theo …  
Các phát biểu trong hợp ngữ MIPS  
Khung dạng chương trình hợp ngữ MIPS  
Định nghĩa/khai báo dữ liệu  
Địa chỉ bắt đầu (alignment) và thứ tự các byte trong bộ nhớ  
Các hàm hệ thống  
Thủ tục/hàm  
Truyền tham số và Runtime Stack  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
16  
dce  
2015  
Địa chỉ bắt đầu (alignment) trong bộ nhớ  
Bộ nhớ được xem là mảng các ô nhớ 1 byte  
Định địa chỉ theo byte: mỗi địa chỉ tương ứng ô nhớ 1 byte  
Từ nhớ (word) chiếm 4 byte liên tiếp trong bộ nhớ  
Mỗi lệnh MIPS là một số nhị phân 4 byte  
Alignment: địa chỉ bắt đầu phải chia hết cho kích thước  
Memory  
Địa chỉ một word là một số chia hết cho 4  
. . .  
. Hai bit thấp của địa chỉ là 00  
aligned word  
not aligned  
12  
8
Địa chỉ một half word chia hết cho 2  
4
Chỉ thị.ALIGN n  
not aligned  
0
Quy định địa chỉ bắt đầu của biến khai báo kế tiếp có địa chỉ  
bắt đầu là một số chia hết cho 2n  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
17  
dce  
2015  
Bảng ký hiệu (Symbol Table)  
Assembler tạo bảng ký hiệu cho các biến (label)  
Assembler tính toán địa chỉ của các biến trong vùng nhớ  
dữ liệu và lưu vào bảng ký hiệu  
Ví dụ  
Symbol Table  
.DATA  
Label Address  
var1: .BYTE 1, 2,'Z'  
var1 0x10010000  
str1 0x10010003  
var2 0x10010010  
var3 0x10010018  
str1: .ASCIIZ "My String\n"  
var2: .WORD 0x12345678  
.ALIGN 3  
var3: .HALF 1000  
str1  
var1  
0x10010000  
0x10010010  
var2 (aligned)  
Unused  
1 2 'Z' 'M' 'y' ' ' 'S' 't' 'r' 'i' 'n' 'g' '\n' 0 0 0  
0x12345678 0 0 0 0 1000  
Unused  
var3 (address is multiple of 8)  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
18  
dce  
2015  
Thứ tự trọng số các ô nhớ (Endianness)  
Bộ xử lý xác định trọng số các ô nhớ trong một word theo:  
Little Endian  
Địa chỉ bắt đầu = địa chỉ của byte trọng số nhỏ LSB  
Ví dụ: Intel IA-32, Alpha  
a
a+1  
a+2  
a+3  
MSB  
LSB  
address  
. . .  
. . .  
Byte 3 Byte 2 Byte 1 Byte 0  
32-bit Register  
Byte 0 Byte 1 Byte 2 Byte 3  
Memory  
Big Endian  
Địa chỉ bắt đầu = địa chỉ của byte trọng số lớn MSB  
Ví dụ: SPARC, PA-RISC  
a
a+1  
a+2  
a+3  
MSB  
LSB  
address  
. . .  
. . .  
Byte 3 Byte 2 Byte 1 Byte 0  
32-bit Register  
Byte 3 Byte 2 Byte 1 Byte 0  
Memory  
MIPS hỗ trợ cả hai dạng định thứ tự byte trên  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
19  
dce  
2015  
Tiếp theo …  
Các phát biểu trong hợp ngữ MIPS  
Khung dạng chương trình hợp ngữ MIPS  
Định nghĩa/khai báo dữ liệu  
Địa chỉ bắt đầu (alignment) và thứ tự các byte trong bộ nhớ  
Các hàm hệ thống  
Thủ tục/hàm  
Truyền tham số và Runtime Stack  
Kiến trúc Máy tính– Chương 3  
© Fall 2015  
20  
Tải về để xem bản đầy đủ
pdf 63 trang Thùy Anh 15120 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 3, Phần 3: Hợp ngữ MIPS - Võ Tấn Phương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_3_phan_3_hop_ngu_mips_vo.pdf