) Việc có 1 toán hạng trong câu lệnh xảy ra khá thường xuyên đối với câu lệnh số học
• Trong chương trình gcc , 52% câu lệnh số học có 1 toán hạng là hằng số
• Trong chương trình spice , con số này là 69%
) Hằng số hay toán hạng tức thời (immediate operand)
được biểu diễn bởi vùng 16 bit trong câu lệnh dạng i-type
• Lệnh add immediate ( addi )
addi $sp , $sp , 4
• Lệnh set on less than ( slti ) slti $t0 , $s2 , 10
16 bits5 bits 5 bits 5 bits 6 bits immediate rt rs op 0000 0000 0000 0100 11101 11101 001000
...
) Nguyên tắc thiết kế 4
Trường hợp càng phổ biến, càng phải nhanh
) Trong trường hợp hằng số lớn hơn 16 bit ?
• Lệnh load upper immediate ( lui ) Giá trị ban đầu của $s0 $s0 = 0000 0000 0000 0000 0000 0000 0000 0000 Thực thi lệnh lui lui $s0 , 0b0000000000111101 $s0 = 0000 0000 0011 1101 0000 0000 0000 0000 Thực thi lệnh addi addi $s0 , $s0 , 0b0000100100000000 $s0 = 0000 0000 0011 1101 0000 1001 0000 0000
...
) Địa chỉ đích trong các lệnh nhảy
• Đối với lệnh nhảy có điều kiện, vùng địa chỉ là 16 bit (I-type) • Dạng lệnh J-type cho phép vùng địa chỉ của lệnh nhảy không
điều kiện lên đến 26 bit
• Địa chỉ đích là 26 bit trong vùng toán hạng kết hợp với các bit cao trong thanh ghi PC
• Lệnh j 10000 ) Giải pháp cho lệnh nhảy có điều kiện ? PC = PC + địa chỉ 16 bit 26 bits 6 bits Immediate op
...
) Các phương thức địa chỉ hóa (addressing mode) ở
MIPS
• Register addressing Toán hạng là nội dung thanh ghi
• Base addressing hay displacement addressing
Toán hạng là nội dung ô nhớ có địa chỉ là tổng giữa nội dung thanh ghi và 1 hằng số 16 bit chứa trong câu lệnh
• Immediate addressing
Toán hạng là hằng số 16 bit chứa trong câu lệnh
• PC-relative addressing
Toán hạng, địa chỉ đích của lệnh nhảy, là tổng giữa nội dung thanh ghi PC với hằng số 16 bit chứa trong câu lệnh
• Pseudodirect addressing
Toán hạng, địa chỉ đích của lệnh nhảy, là hằng số 26 bit chứa trong câu lệnh kết hợp với các bit cao trong thanh ghi PC