Duy Nguyen Hoang A fully enthusiastic boy

MIPS Architecture Series – Phần 3: Syscall

2 min read

mars mips

Chào mừng bạn đến với loạt bài viết về kiến trúc MIPS! Trong phần này, chúng ta sẽ tìm hiểu về lệnh “syscall” trong kiến trúc MIPS và công dụng của nó.

Giới thiệu về lệnh syscall trong MIPS

Lệnh “syscall” trong kiến trúc MIPS được sử dụng để gọi các hệ thống gọi (system call) của hệ điều hành. Các hệ thống gọi này cung cấp khả năng truy cập vào các tính năng hệ thống như đọc và ghi tệp tin, quản lý bộ nhớ, và tương tác với các dịch vụ hệ thống khác. Lệnh syscall cho phép chương trình MIPS chuyển quyền điều khiển từ chế độ người dùng sang chế độ nhân hệ điều hành để thực hiện các tác vụ hệ thống.

Công dụng của lệnh syscall

Lệnh syscall trong MIPS cho phép chúng ta thực hiện các hoạt động quan trọng như:

  • Đọc và ghi dữ liệu từ bàn phím và xuất dữ liệu ra màn hình.
  • Mở, đóng và tạo tệp tin.
  • Quản lý bộ nhớ, bao gồm cấp phát và giải phóng bộ nhớ.
  • Thực hiện các hoạt động liên quan đến thời gian, như trễ thời gian và đọc thời gian hệ thống.
  • Gọi các dịch vụ hệ thống khác nhau, chẳng hạn như truy cập mạng hoặc gửi thông điệp.

Với lệnh syscall, chúng ta có thể tương tác với hệ điều hành để thực hiện các tác vụ không thể được thực hiện bằng các lệnh thông thường trong MIPS.

Bảng mô tả chức năng syscall trong MIPS

Dưới đây là bảng mô tả một số chức năng quan trọng và thanh ghi được sử dụng bởi lệnh syscall trong kiến trúc MIPS:

Ref: https://buivanluongueh.files.wordpress.com/2011/09/vanluong-blogspot-com_mips.pdf

Chương trình nhập xuất đơn giản sử dụng syscall

Dưới đây là một chương trình MIPS đơn giản sử dụng lệnh syscall để nhập và xuất dữ liệu:

.data
    prompt:     .asciiz "Nhap so nguyen thu nhat: "
    prompt2:     .asciiz "Nhap so nguyen thu 2: "
    result:     .asciiz "Tong 2 so da nhap la: "
    newline:    .asciiz "\n"

.text
.globl main

main:
    li $v0, 4               # In : "Nhap so nguyen thu nhat: "
    la $a0, prompt		    # prompt1 đại diện cho câu trên
    syscall

    li $v0, 5               # Đọc một số nguyên từ bàn phím
    syscall

    move $t0, $v0           # Lưu số nguyên đã đọc vào $t0

    li $v0, 4               # In : "Nhap so nguyen thu hai: "
    la $a0, prompt2		    # prompt2 đại diện cho câu trên
    syscall

    li $v0, 5               # Đọc một số nguyên từ bàn phím
    syscall

    move $t1, $v0           # Lưu số nguyên đã đọc vào $t1
    
    add $t0, $t0, $t1		# $t0 = $t0 + $t1

    li $v0, 4               # In : "So da nhap la: "
    la $a0, result
    syscall

    move $a0, $t0           # In tổng 2 số nguyên đã đọc
    li $v0, 1
    syscall

    li $v0, 10              # Thoát chương trình
    syscall

Chương trình trên yêu cầu người dùng nhập 2 số nguyên từ bàn phím, sau đó in ra màn hình tổng 2 số đã nhập. Cuối cùng, chương trình thoát ra khỏi chương trình MIPS. Các lệnh syscall được sử dụng để thực hiện các tác vụ nhập và xuất dữ liệu.

Kết quả:

Kết luận

Tóm lại, lệnh syscall là một phần quan trọng trong kiến trúc MIPS, cho phép chúng ta tương tác với hệ điều hành và thực hiện các tác vụ hệ thống quan trọng. Bằng cách sử dụng các chức năng và thanh ghi liên quan, chúng ta có thể xây dựng các chương trình MIPS mạnh mẽ và linh hoạt.

Avatar photo
Duy Nguyen Hoang A fully enthusiastic boy

Leave a Reply

Your email address will not be published. Required fields are marked *