Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
491,32 KB
Nội dung
Lệnh case (switch) ngôn ngữ bậc cao switch (k) { case 0: h=i+j; case 1: h=i+h; case 2: h=i-j; Giả sử từ liên tiếp nhớ địa lưu $t4 chứa giá trị nhãn L0, L1, L2 k $t4 lưu $s2 L0: L1: L2: Exit: Memory break; /*k=0*/ break; /*k=1*/ break; /*k=2*/ add add add lw jr add j add j sub $t1, $t1, $t1, $t0, $t0 $s3, Exit $s3, Exit $s3, $s2, $s2 $t1, $t1 $t1, $t4 0($t1) L2 L1 L0 $s0, $s1 #$t1 = 2*k #$t1 = 4*k #$t1 = addr of JumpT[k] #$t0 = JumpT[k] #jump based on $t0 #k=0 so h=i+j $s0, $s3 #k=1 so h=i+h $s0, $s1 #k=2 so h=i-j Các từ lưu địa nhãn gọi bảng địa nhảy (jump address table) Bảng chứa liệu thường nằm chung với đoạn mã chương trình 82 HUST-FET, 13/02/2011 Gọi hàm thủ tục Hàm (hàm gọi, caller) đặt tham số vào vị trị mà thủ tục (hàm bị gọi, callee) truy cập Hàm gọi chuyển quyền điều khiển cho hàm bị gọi Hàm bị gọi cấp chỗ lưu trữ cần thiết Hàm bị gọi thực công việc mong muốn Hàm bị gọi đặt kết vào vị trí hàm gọi truy cập $a0 - $a3: ghi tham số $v0 - $v1: ghi kết Hàm bị gọi trả điều khiển cho hàm gọi $ra: ghi địa trở để quay vị trí xuất phát 83 HUST-FET, 13/02/2011 Lệnh để gọi hàm MIPS procedure call instruction: jal ProcAddress #jump and link Lưu PC+4 vào ghi $ra đường dẫn đến lệnh trở từ hàm Định dạng mã máy: op 26 bit address J format ???? Hàm trở hàm gọi bằng: jr $ra #return 84 HUST-FET, 13/02/2011 Tổng kết MIPS Các loại lệnh Registers Load/Store Computational Jump and Branch Floating Point R0 - R31 - coprocessor PC HI Memory Management Special LO định dạng lệnh: độ rộng 32 bit bits bits bits bits rd OP rs rt OP rs rt OP bits shamt 16 bit number 26 bit jump target 85 bits funct R format I format J format HUST-FET, 13/02/2011 Tổng kết lệnh MIPS Category Instr Arithmetic add (R & I subtract format) add immediate OpC Example Meaning & 20 add $s1, $s2, $s3 $s1 = $s2 + $s3 & 22 sub $s1, $s2, $s3 $s1 = $s2 - $s3 addi $s1, $s2, $s1 = $s2 + shift left logical & 00 sll $s1, $s2, $s1 = $s2 > (fill with zeros) shift right arithmetic & 03 sra $s1, $s2, $s1 = $s2 >> (fill with sign bit) and & 24 and $s1, $s2, $s3 $s1 = $s2 & $s3 or & 25 or $s1 = $s2 | $s3 nor & 27 nor $s1, $s2, $s3 $s1, $s2, $s3 $s1 = not ($s2 | $s3) and immediate c and $s1, $s2, ff00 $s1 = $s2 & 0xff00 or immediate d or $s1 = $s2 | 0xff00 load upper immediate f lui $s1, 0xffff $s1, $s2, ff00 86 $s1 = 0xffff0000 HUST-FET, 13/02/2011 Tổng kết lệnh MIPS Category Instr Data transfer (I format) load word 23 lw store word 2b sw $s1, 100($s2) Memory($s2+100) = $s1 load byte 20 lb $s1, 101($s2) $s1 = Memory($s2+101) store byte 28 sb $s1, 101($s2) Memory($s2+101) = $s1 load half 21 lh $s1, 101($s2) $s1 = Memory($s2+102) store half 29 sh $s1, 101($s2) Memory($s2+102) = $s1 br on equal beq $s1, $s2, L if ($s1==$s2) go to L br on not equal bne $s1, $s2, L if ($s1 !=$s2) go to L set on less than immediate a slti $s1, $s2, 100 if ($s2