Chương 3.2: Hợp Ngữ MIPS - Kiến Thức Cơ Bản và Ứng Dụng

Tài liệu nghiên cứu Chapter03 2mips assembly 2, tổng hợp lý thuyết và thực hành, cung cấp kiến thức chuyên sâu về ., phục vụ nghiên cứu và ứng dụng thực tiễn

Trường đại học

Khoa Học & Kỹ Thuật Máy Tính BK

Chuyên ngành

Kiến Trúc Máy Tính

Người đăng

Ẩn danh

Thể loại

Chương

2017

63
2
0

Phí lưu trữ

30 Point

Mục lục chi tiết

3. CHƯƠNG 3: Hợp ngữ MIPS (Assembly Language)

3.1. Các phát biểu trong hợp ngữ MIPS

3.2. Khung dạng chương trình hợp ngữ MIPS

3.3. Định nghĩa/khai báo dữ liệu

3.4. Địa chỉ bắt đầu (alignment) và thứ tự các byte trong bộ nhớ

3.5. Các hàm hệ thống

3.6. Thủ tục/hàm

3.7. Truyền tham số và Runtime Stack

Tóm tắt

I. Tổng quan về Hợp Ngữ MIPS Chương 3

Hợp ngữ MIPS là một ngôn ngữ lập trình gần gũi với phần cứng, cho phép lập trình viên tương tác trực tiếp với kiến trúc máy tính. Chương 3.2 sẽ cung cấp cái nhìn tổng quan về các phát biểu trong hợp ngữ MIPS, cấu trúc chương trình và cách khai báo dữ liệu. Việc hiểu rõ về hợp ngữ MIPS là rất quan trọng cho việc phát triển phần mềm hiệu quả.

1.1. Hợp ngữ MIPS là gì

Hợp ngữ MIPS là ngôn ngữ lập trình được thiết kế để lập trình cho kiến trúc MIPS. Nó cho phép lập trình viên viết mã gần gũi với mã máy, giúp tối ưu hóa hiệu suất chương trình.

1.2. Tại sao cần học Hợp ngữ MIPS

Học hợp ngữ MIPS giúp lập trình viên hiểu rõ hơn về cách thức hoạt động của máy tính, từ đó tối ưu hóa mã nguồn và cải thiện hiệu suất ứng dụng.

II. Các loại phát biểu trong Hợp Ngữ MIPS

Trong hợp ngữ MIPS, có ba loại phát biểu chính: lệnh thật, lệnh giả và chỉ thị của assembler. Mỗi loại phát biểu có vai trò và cách sử dụng riêng, giúp lập trình viên dễ dàng hơn trong việc viết mã.

2.1. Lệnh thật trong Hợp ngữ MIPS

Lệnh thật là các lệnh trong tập lệnh của bộ xử lý MIPS, tương ứng với mã máy 32 bit. Chúng thực hiện các phép toán cơ bản như cộng, trừ, nhân, chia.

2.2. Lệnh giả và chỉ thị của Assembler

Lệnh giả giúp giảm bớt công sức cho lập trình viên bằng cách chuyển đổi thành lệnh thật. Chỉ thị của assembler cung cấp thông tin cần thiết để dịch chương trình mà không thực thi.

III. Khung dạng chương trình hợp ngữ MIPS

Khung dạng chương trình hợp ngữ MIPS bao gồm các phần như phân đoạn dữ liệu, phân đoạn mã và các chỉ thị toàn cục. Việc hiểu rõ cấu trúc này giúp lập trình viên tổ chức mã nguồn một cách hợp lý.

3.1. Phân đoạn dữ liệu và mã

Phân đoạn dữ liệu chứa các biến và dữ liệu cần thiết cho chương trình, trong khi phân đoạn mã chứa các lệnh thực thi. Cấu trúc này giúp phân tách rõ ràng giữa dữ liệu và mã.

3.2. Chỉ thị toàn cục trong MIPS

Chỉ thị toàn cục cho phép khai báo các ký hiệu có thể được tham chiếu từ các file khác nhau, giúp tăng tính tái sử dụng của mã.

IV. Địa chỉ bắt đầu và thứ tự các byte trong bộ nhớ

Địa chỉ bắt đầu trong bộ nhớ phải tuân theo quy tắc alignment, tức là địa chỉ phải chia hết cho kích thước của dữ liệu. Điều này rất quan trọng để đảm bảo hiệu suất và tính chính xác của chương trình.

4.1. Quy tắc alignment trong MIPS

Alignment yêu cầu địa chỉ bắt đầu của một từ phải chia hết cho 4, trong khi địa chỉ của half word phải chia hết cho 2. Điều này giúp tối ưu hóa việc truy cập bộ nhớ.

4.2. Thứ tự trọng số các ô nhớ Endianness

MIPS hỗ trợ cả hai dạng định thứ tự byte: Little Endian và Big Endian. Điều này ảnh hưởng đến cách mà dữ liệu được lưu trữ và truy xuất trong bộ nhớ.

V. Các hàm hệ thống trong Hợp Ngữ MIPS

Hợp ngữ MIPS cung cấp các hàm hệ thống để thực hiện các tác vụ như nhập/xuất dữ liệu. Việc sử dụng các hàm này giúp lập trình viên dễ dàng hơn trong việc tương tác với hệ điều hành.

5.1. Cách sử dụng hàm syscall

Để gọi một dịch vụ từ hệ điều hành, lập trình viên cần gán mã số dịch vụ vào thanh ghi $v0 và các tham số vào các thanh ghi $a0, $a1, $a2.

5.2. Các dịch vụ phổ biến của syscall

Các dịch vụ như in số nguyên, đọc chuỗi, và ghi vào file là những chức năng cơ bản mà lập trình viên thường sử dụng trong hợp ngữ MIPS.

VI. Kết luận và tương lai của Hợp Ngữ MIPS

Hợp ngữ MIPS là một công cụ mạnh mẽ cho lập trình viên, giúp tối ưu hóa mã nguồn và hiểu rõ hơn về kiến trúc máy tính. Tương lai của hợp ngữ MIPS sẽ tiếp tục phát triển cùng với công nghệ mới.

6.1. Tầm quan trọng của Hợp ngữ MIPS trong lập trình

Hợp ngữ MIPS không chỉ giúp lập trình viên tối ưu hóa mã mà còn cung cấp cái nhìn sâu sắc về cách thức hoạt động của máy tính.

6.2. Xu hướng phát triển của Hợp ngữ MIPS

Với sự phát triển của công nghệ, hợp ngữ MIPS sẽ tiếp tục được cải tiến, mở rộng khả năng và ứng dụng trong nhiều lĩnh vực khác nhau.

15/07/2025

Trích đoạn nội dung tài liệu

dce 2017 KIẾN TRÚC MÁY TÍNH KHOA HỌC & KỸ THUẬT MÁY TÍNH BK Võ Tấn Phương TP.HCM http://www.vn/~vtphuong dce 2017 Chapter 3.2 Hợp ngữ MIPS (Assembly Language) Kiến trúc Máy tính– Chương 3 © Fall 2017 2 dce 2017 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 2017 3 dce 2017 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 2017 4 dce 2017 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 2017 5 dce 2017 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 2017 6 dce 2017 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 2017 7 dce 2017 Khung dạng mẫu của chương trình hợp ngữ # Title: Filename: # Author: Date: # Description: # Input: # Output: ################# Data segment ##################### .globl main main: # main program entry.

li $v0, 10 # Exit program syscall Kiến trúc Máy tính– Chương 3 © Fall 2017 8 dce 2017 Chỉ thị .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 2017 9 dce 2017 Phân chia phân đoạn của chương trình 0x7FFFFFFF Stack Segment Stack Grows Downwards Memory Addresses in Hex Dynamic Area Data Segment Static Area 0x10000000 Text Segment 0x04000000 Reserved 0 Kiến trúc Máy tính– Chương 3 © Fall 2017 10 dce 2017 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 2017 11 dce 2017 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] .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 2017 12 dce 2017 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 2017 13 dce 2017 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 2017 14 dce 2017 Ví dụ khai báo biến .HALF -10, 0xffff Array of 100 words var3: .ASCII "A String\n" str2: .ASCIIZ "NULL Terminated String" array: .SPACE 100 100 bytes (not initialized) Kiến trúc Máy tính– Chương 3 © Fall 2017 15 dce 2017 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 2017 16 dce 2017 Đị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 address.  Hai bit thấp của địa chỉ là 00 aligned word 12 not aligned  Địa chỉ một half word chia hết cho 2 8 4  Chỉ thị.ALIGN n 0 not aligned  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 2017 17 dce 2017 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: .ASCIIZ "My String\n" str1 0x10010003 var2: .ALIGN 3 var3 0x10010018 var3: .HALF 1000 str1 var1 0x10010000 1 2 'Z' 'M' 'y' ' ' 'S' 't' 'r' 'i' 'n' 'g' '\n' 0 0 0 Unused 0x10010010 0x12345678 0 0 0 0 1000 var2 (aligned) Unused var3 (address is multiple of 8) Kiến trúc Máy tính– Chương 3 © Fall 2017 18 dce 2017 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 MSB LSB address a a+1 a+2 a+3 Byte 3 Byte 2 Byte 1 Byte 0. Byte 0 Byte 1 Byte 2 Byte 3. 32-bit Register Memory  Big Endian  Địa chỉ bắt đầu = địa chỉ của byte trọng số lớn MSB  Ví dụ: SPARC, PA-RISC MSB LSB address a a+1 a+2 a+3 Byte 3 Byte 2 Byte 1 Byte 0.

Byte 3 Byte 2 Byte 1 Byte 0 .

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ