1. Trang chủ
  2. » Tất cả

Tài liệu hướng dẫn thí nghiệm môn kiến trúc máy tính module 1 tiếp cận phần mềm biên dịch mars 4 0

52 0 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ - VIỄN THƠNG *** TÀI LIỆU HƯỚNG DẪN THÍ NGHIỆM MƠN KIẾN TRÚC MÁY TÍNH Nhóm biên soạn: Phịng thí nghiệm: C9 306 Họ tên sinh viên: Phùng Huy Hoàng Mã lớp: TN 706615 Mã số SV: 20172578 Lớp: ĐTVT06 – K62 Email: hoang.ph172578@sis.hust.edu.vn Hà Nội 2021 Bài thí nghiệm Kiến trúc máy tnh 2021 Module 1: Tiếp cận phần mềm biên dịch MARS 4.0 1.1 Cơ sở lý thuyết 1.1.1 Kiến trúc máy tính Kiến trúc máy tính khái niệm rộng bao gồm: thiết kế CPU, hoạt động thành phần máy tính cpu lệnh thực nào, đọc ghi liệu với nhớ Kiến trúc máy tính gồm nội dung chính: Kiến trúc tập lệnh: tập lệnh, cách đánh địa nhớ, ghi, định dạng địa liệu Vi kiến trúc: mô tả mức vật lý, trình bày thành phần cpu hoạt động tương tác với để thực lệnh kiến trúc tập lệnh Thiết kế hệt thống: bao gồm vác thành phần khác hệ thống tính tốn đường kết nối hệ thống bus, điều khiển nhớ, truy cập nhớ trực tiếp Các kiến trúc phổ biến cpu gồm: Intel x86: cpu dựa x86 sử dụng kiến trúc tập lệnh CISC phổ biến rộng rãi máy tính PC cho hiệu cao bù lại tiêu tốn nhiều lượng nhà sản xuất phép chế tạo cpu x86 gồm: Intel Arm: tạo công ty ARM kiến trúc sử dụng tập lệnh RISC với ưu điểm tiêu tốn lượng, dùng nhiều thiết bị di động hệ thống nhúng Khác với Intel, Arm không trực tiếp sản xuất cpu mà cấp quyền cho nhà sản xuất khác như: ST, Samsung, Qualcomm, Nvidia… MIPS: tạo MIPS Technologies sử dụng kiến trúc tập lệnh RISC, kiến trúc sử dụng nhiều Vi xử lý quen thuộc với sinh viên PIC, AVR… Bộ môn kiến trúc máy tính giới thiệu kiến trúc MIPS kiến trúc đơn giản tạo tiền đề để nghiên cứu kiến trúc phức tạo Arm, x86 1.1.2 Kiến trúc MIPS hợp ngữ MIPS 1.1.2.1 Kiến trúc MIPS MIPS hình thành sở RISC Thiết kế MIPS có đặc điểm câu lệnh hồn thành chu kì máy MIPS kiến trúc 32 bit mở rộng lên 64 bit 32 bit hay 64 bit đồng nghĩa với việc có độ rộng đường địa độ dài ghi cpu tương ứng 32 bit hay 64 bit Trong khn khổ mơn kiến trúc máy tính, ta tìm hiểu 32 bit MIPS: 32 bit địa chỉ, đánh địa theo Byte từ 0x00000000 đến 0xFFFFFFFF Các ghi MIPS: Tên Số Ý nghĩa $zero $0 Hằng số $at $1 Assembler Temporary $v0 - $v1 $2 - $3 Giá trị trả lại hàm biểu thức Page Tên $t8 - $t9 $k0 $gp Số Ý nghĩa $24 Thanh ghi tạm $26 Dự trữ cho nhân $28 Con trỏ tồn cục Bài thí nghiệm Kiến trúc máy tnh $a0 $t0 - $t7 $s0 - $s7 $4-$7 $8 $15 $16 $23 2021 Các tham số hàm Thanh ghi tạm (không giữ giá trị trình gọi làm) Thanh ghi lưu trữ (giữ giá trị suốt trình gọi hàm) $sp $fp $29 Con trỏ stack $30 Con trỏ flame $ra $31 Địa trỏ Thanh ghi HI & LO: Thao tác nhân MIPS có kết chứa ghi HI & LO Đây ghi đa Bit 32 đến 63 thuộc HI đến 31 thuộc LO Tương tự với phép chia Thanh ghi dấu phẩy động: MIPS sử dụng 32 ghi dấu phẩy động để biểu diễn độ xác đơn số thực Các ghi có tên $f0 - $f31 Để biểu diễn độ xác kép (double precision) MIPS sử dụng ghi có độ xác đơn 1.1.2.2 Hợp ngữ MIPS a Hợp ngữ Hợp ngữ (Assembly) ngơn ngữ lập trình bậc thấp, gồm tập từ khóa từ gợi nhớ gần với ngôn ngữ máy (machine code) Mỗi kiến trúc vi xử lý có tập lệnh (instruction set) riêng, có hợp ngữ riêng dành cho kiến trúc Ở đây, ta tập trung nghiên cứu hợp ngữ dành cho kiến trúc MIPS Môi trường lập trình sử dụng chương trình MARS MARS mơi trường lập trình giả lập giúp ta viết, biên dịch chạy hợp ngữ MIPS máy x86 Page Bài thí nghiệm Kiến trúc máy tnh - - 2021 b Cấu trúc của chương trình hợp ngữ MIPS: data #khai báo biến sau thị … text #viết lệnh sau thị Main: #điểm bắt đầu chương trình … c Cách khao báo biến: tên_biến: kiểu_lưu_trữ giá_trị Các kiểu lưu trữ hỗ trợ: word, byte, ascii, asciiz, sapce Lưu ý: tên_biến (nhãn) phải theo sau dấu hai chấm (:) Ví dụ: var1: word #số nguyên 4-byte có giá trị khởi tạo var2: byte ‘a’,’b’ #mảng phần tử, khởi tạo a b int_array: word 0:30 #mảng 30 số nguyên khởi tạo d Cú pháp tổng quát lệnh MIPS ,, r1: ghi chứa kết r2: ghi r3: ghi số e Một số lệnh MIPS Kiến trúc tập lệnh loại lệnh: I-Type (Immediate) J-Type (Jump and branch) R-Type (Register) Lệnh loại R Op rs rt rd sh Fn bits bits bits bits bits bits Mã máy Thanh ghi nguồn Thanh ghi nguồn Thanh ghi đích Khoảng dịch Mã máy mở rộng Op rs rt Toán tử/Offset bits bits bits 16 bits Mã máy Thanh ghi nguồn Thanh ghi nguồn Toán tử trực tiếp (toán tử hẳng số) địa offset Lệnh loại I Lệnh loại J Op Địa đích Page Bài thí nghiệm Kiến trúc máy tnh 2021 bits 26 bits Mã máy Địa từ nhớ (địa byte chia cho 4) Ghi chú: Rd: ghi đích Rs, Rt: ghi nguồn Các lệnh in nghiêng lệnh giả (pseudo instructions) Lệnh Load/Store Đây lệnh phép truy xuất nhớ RAM tập lệnh MIPS Cú pháp Ý nghĩa Iw Rd, RAM_src Chép word (4 byte) vị trí nhớ RAM vào Ib Rd, RAM_src Chép byte vị trí nhớ RAM vào byte thấp ghi sw Rs, RAM_dest Lưu word ghi vào vị trí nhớ RAM sb Rs, RAM_dest Lưu byte thấp ghi vào vị trí nhớ RAM li Rd, value Khởi tạo ghi với giá trị la Rd, label Khởi tạo ghi với địa nhãn Nhóm lệnh số học Cú pháp Ý nghĩa add Rd, Rs, Rt Rd = Rs + Rt (kết có dấu) addi Rd, Rs imm Rd = Rs + imm addu Rd, Rs, Rt Rd = Rs + Rt (kết không dấu) sub Rd, Rs, Rt Rd = Rs - Rt subu Rd, Rs, Rt Rd = Rs – Rt (kết không dấu) Mult Rs, Rt (Hi,Lo) = Rs * Rt Div Rs, Rt Lo = Rs / Rt (thương), Hi = Rs % Rt (số dư) mfhi Rd Rd = Hi mfho Rd Rd = Lo move Rd, Rs Rd = Rs Nhóm lệnh nhảy Cú pháp Ý nghĩa j label Nhảy không điều kiện đến nhãn “label” jal label Lưu địa trở vào $ra nhảy đến nhãn ‘label’ (dùng gọi) jr Rs Nhảy đến địa ghi Rs (dùng để trở từ lời gọi) bgez Rs, label Nhảy đến nhãn ‘label’ Rs >=0 bgtz Rs, label Nhảy đến nhãn ‘label’ Rs >0 blez Rs, label Nhảy đến nhãn ‘label’ Rs Open để mở file asm có Bây chỉnh sửa mã nguồn vùng soạn thảo (Hình 1) Nhập mã chương trình Hello-World vào vùng soạn thảo đoạn chương trình bên dưới: Page Bài thí nghiệm Kiến trúc máy tnh # # # # # # # # # # 2021 text assembler directive text Declare main as a global function globl main The label 'main' represents the starting point main: Run the print_string syscall which has code li $v0 , # Code for syscall: print_string la $a0, msg # Pointer to string (load the address of msg) syscall li $v0,10 # Code for syscall: exit syscall All memory structures are placed after the data assembler directive data The asciiz assembler directive creates an ASCII string in memory terminated by the null character Note that strings are surrounded by double-quotes smsg: asciiz "Hello World!\n" Lưu lại với tên Hello-world.asm Biên dịch chương trình cách bấm vào biểu tượng bấm F3 vào menu Run -> Assemble Sau biên dịch thành cơng, chương trình xuất thơng báo “Assemble: operation completed successfully” vùng hiển thị thông báo, đồng thời chương trình tự động chuyển sang giao diện thực thi hình Page Bài thí nghiệm Kiến trúc máy tnh 2021 Thực thi chương trình cách bấm vào biểu tượng bấm F5 Sau thành cơng chương trình xuất thơng báo: “Hello, World” vùng thông báo Yêu cầu: sinh viên thực chạy lại bước (step by step) chương trình Hello-World, quan sát thay đổi ghi Chuyển hiển dạng hiển từ số hex sang số thập phân ngược lại 1.2.3 Chương trình kiểm tra lệnh MIPS Sinh viên tự viết chương trình dùng cách để kiểm tra lệnh sau: add, sub, addu, subu, sll, srl,… Chạy bước (step by step) chương trình quan sát thay đổi giá trị ghi vùng hiển thị giá trị ghi Tham khảo đoạn chương trình: data #data declaration section; specifies values to be stored #in memory and labels whereby the values are accessed text #start of code section main: 1.3 Yêu cầu: # Execution begins at lable "main" addi $t0, $0, 100 #$t0 = 100 addi $t1, $0, -4 #$t1 = -4 add $a0, $t1, $t0 #$a0 = $t1 + $t0 li $v0, # system call code for print an integer at $a0 = syscall # call oprating system to perform operation; A u cầu phịng thí nghiệm Program 1: Hãy viết chương trình MIPS thực hiện: Nhập chữ số từ bàn phím Tính tổng số vừa nhập hiển thị hình Program 2: Hãy viết chương trình MIPS thực hiện: Nhập số N từ bàn phím Tính tổng số N sử dụng vịng lặp while () Page

Ngày đăng: 18/03/2023, 06:38

Xem thêm:

w