Chương 3: Hợp Ngữ MIPS và Các Khái Niệm Cơ Bản

Chuyên khảo phân tích Chapter03 2mips assembly, đánh giá các khía cạnh quan trọng, đề xuất hướng nghiên cứu tiếp theo., 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

Giáo Trình

2015

63
15
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 Cấu Trúc và Lệnh Cơ Bản

Hợp ngữ MIPS là một ngôn ngữ lập trình gần với mã máy, cho phép lập trình viên tương tác trực tiếp với phần cứng. Ngôn ngữ này được sử dụng rộng rãi trong giáo dục và nghiên cứu về kiến trúc máy tính. Bài viết này sẽ cung cấp cái nhìn tổng quan về cấu trúc và các lệnh cơ bản trong hợp ngữ MIPS.

1.1. Hợp Ngữ MIPS Là Gì

Hợp ngữ MIPS là ngôn ngữ lập trình được thiết kế để dễ dàng chuyển đổi sang mã máy. Nó cho phép lập trình viên viết các chương trình gần gũi với cách mà CPU thực thi lệnh.

1.2. Tại Sao Nên Học Hợp Ngữ MIPS

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

II. Các Vấn Đề Thường Gặp Khi Lập Trình Hợp Ngữ MIPS

Khi làm việc với hợp ngữ MIPS, lập trình viên thường gặp phải một số thách thức như quản lý bộ nhớ, hiểu rõ các lệnh và cách sử dụng thanh ghi. Những vấn đề này có thể gây khó khăn cho người mới bắt đầu.

2.1. Quản Lý Bộ Nhớ Trong Hợp Ngữ MIPS

Quản lý bộ nhớ là một trong những thách thức lớn nhất. Lập trình viên cần hiểu cách phân bổ và giải phóng bộ nhớ để tránh lỗi tràn bộ nhớ.

2.2. Hiểu Các Lệnh Cơ Bản Trong Hợp Ngữ MIPS

Các lệnh cơ bản như ADD, SUB, và LOAD là rất quan trọng. Việc nắm vững chúng giúp lập trình viên viết mã hiệu quả hơn.

III. Hướng Dẫn Sử Dụng Các Lệnh Cơ Bản Trong Hợp Ngữ MIPS

Hợp ngữ MIPS cung cấp nhiều lệnh cơ bản cho việc thực hiện các phép toán và thao tác với dữ liệu. Việc hiểu rõ cách sử dụng các lệnh này là rất cần thiết cho lập trình viên.

3.1. Các Lệnh Cơ Bản ADD SUB MULT

Các lệnh như ADD và SUB cho phép thực hiện các phép toán số học cơ bản. MULT được sử dụng để nhân hai số nguyên.

3.2. Lệnh Tải và Lưu Dữ Liệu LOAD STORE

Lệnh LOAD và STORE cho phép truy cập và lưu trữ dữ liệu từ bộ nhớ. Đây là những lệnh quan trọng trong việc quản lý dữ liệu.

IV. Ứng Dụng Thực Tiễn Của Hợp Ngữ MIPS Trong Lập Trình

Hợp ngữ MIPS không chỉ được sử dụng trong giáo dục mà còn trong các ứng dụng thực tế như phát triển phần mềm nhúng và hệ thống nhúng. Việc nắm vững hợp ngữ MIPS có thể mở ra nhiều cơ hội nghề nghiệp.

4.1. Phát Triển Phần Mềm Nhúng

Hợp ngữ MIPS thường được sử dụng trong phát triển phần mềm cho các thiết bị nhúng, nơi mà hiệu suất và tối ưu hóa mã là rất quan trọng.

4.2. Hệ Thống Nhúng và Kiến Trúc Máy Tính

Nhiều hệ thống nhúng sử dụng kiến trúc MIPS. Việc hiểu rõ hợp ngữ MIPS giúp lập trình viên thiết kế và tối ưu hóa hệ thống hiệu quả hơn.

V. Kết Luận Tương Lai Của Hợp Ngữ MIPS Trong Lập Trình

Hợp ngữ MIPS vẫn giữ vai trò quan trọng trong giáo dục và nghiên cứu về kiến trúc máy tính. Với sự phát triển của công nghệ, hợp ngữ MIPS sẽ tiếp tục là một công cụ hữu ích cho lập trình viên.

5.1. Tầm Quan Trọng Của Hợp Ngữ MIPS Trong Giáo Dục

Hợp ngữ MIPS là một phần quan trọng trong chương trình giảng dạy về kiến trúc máy tính, giúp sinh viên hiểu rõ hơn về cách hoạt động của máy tính.

5.2. Xu Hướng Phát Triển Trong Lập Trình Hợp Ngữ

Với sự phát triển của công nghệ, hợp ngữ MIPS có thể sẽ được cải tiến và mở rộng, tạo ra nhiều cơ hội mới cho lập trình viên.

15/07/2025

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

dce 2015 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 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: # 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 2015 8 dce 2015 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 2015 9 dce 2015 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 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] .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 .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 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 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 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: .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 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 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 đủ