Bài tập Bài 1 Cho biết nếu sử dụng CPU có ISA kiểu Memory Memory để tính biểu thức sau thì cần bao nhiêu lần truy cập bộ nhớ? Nếu sử dụng CPU có ISA kiểu General Purpose Register thì cần bao nhiêu lần[.]
Bài tập Bài Cho biết sử dụng CPU có ISA kiểu Memory-Memory để tính biểu thức sau cần lần truy cập nhớ? Nếu sử dụng CPU có ISA kiểu General Purpose Register cần lần truy cập nhớ? A = B + C + B*C; Bài Trong tập lệnh MIPS khơng có lệnh nhảy so sánh khác Zero (mạc dù lệnh dùng phổ biến) Làm để thực lệnh hiệu Bài Tìm số nhỏ mảng số nguyên, xuất giá trị index vị trí số nhỏ .data iArraySize: word iArray: word numResult: asciiz idxResult: asciiz text main: ### StartCodeHere: 10 12, 32, 13, 43, 17, 1, -2, -45, 0, 11 "Minimum number: " "\nIndex: " ### EndCodeHere: # print your results la $a0, numResult li $v0, syscall move $a0, $s0 li $v0, syscall la $a0, idxResult li $v0, syscall move $a0, $s1 li $v0, syscall #stop program li $v0, 10 syscall #your function start from here Bài Sắp xếp chuỗi số nguyên theo giá trị tăng dần .data cSpace: asciiz " " cEndLine: asciiz "\n" iArraySize: word 10 iArray: word 12, 32, 13, 43, 17, 1, -2, -45, 0, 11 text main: # print integer array lw $t0, iArraySize la $t1, iArray jal print ### StartCodeHere: # load size of iArray # Load base address of iArray ### EndCodeHere: # print integer array lw $t0, iArraySize la $t1, iArray jal print # load size of iArray # Load base address of iArray #stop program li $v0, 10 syscall print: add $t2, loopPrint: beqz $t0, li $v0, add $t3, lw $a0, syscall # print fuction $0, $0 # index of iArray exitPrint $t1, $t2 ($t3) # Check condition # service is print integer # load desired value into $a0 li $v0, la $a0, cSpace syscall # print space just like separator addi $t0, $t0, -1 # decrease loop count addi $t2, $t2, # increase index b loopPrint exitPrint: li $v0, la $a0, cEndLine # print end line syscall jr $ra # end of print #your function start from here Bài Dùng MIPS assembly viết hàm tính Fibonacci phương pháp đệ quy, $a0 N, $v0 kết Bài Dùng MIPS assembly viết hàm tính Fibonacci phương pháp dùng mảng (quy hoạch động), phần tử X[i] mảng lưu giữ giá trị F(i) $a0 N, $v0 kết Bài Hiện thực hàm cộng hai số đoạn chương trình gọi hàm chế truyền thông số qua stack (thông số kết trả qua stack) HƯỚNG DẪN MÔ PHỎNG MIPS DÙNG QTSPIM QtSpim chương trình mơ tập lệnh MIPS, phiên thay cho PCSpim Phần mềm đọc mô file mã nguồn Assembly MIPS Các file mã nguồn viết dạng file *.S có format sau: # data segment data word word # code segment text globl main main: addi $a0, $0, 10 add $t0, $0, $v0 data khai báo đoạn liệu, nơi ta khai báo khởi tạo biến .tex khai báo đoạn code, nơi viết đoạn mã thực thi Sau cài đặt QtSpim chạy chương trình QtSpim, vào menu File/Reinitialize and Load File Chọn file assembly cần mơ phỏng, đoạn chương trình mơ load vào hai cửa sổ gồm: Text, hiển thị nhớ chứa lệnh; Data, hiển thị nhớ chứa liệu Ngồi cịn cửa sổ bên phải hiển thị nội dung ghi Khi mô phỏng, giá trị ghi ô nhớ thay đổi thấy thực thi lệnh Khi load file mã nguồn assembly, QtSpim tự động nạp vào đoạn Kernel code đoạn code để nhảy đến chương trình người dùng Đoạn chương trình người dùng đặt địa 0x00400024 (khoanh màu đỏ) Sau nạp file mã nguồn, sử dụng nút Run, Pause, Stop, Single Step công cụ để mô