Nếu tôi muốn tải một giá trị từ một ký ức mà địa chỉ cơ sở nằm ở mức $ a0 và tắt thiết lập $ t2, tại sao tôi không thể làm như sau:MIPS từ tải cú pháp
lw $s2, $a1($t2)
như vậy là những gì tương đương với biểu thức trên?
Nếu tôi muốn tải một giá trị từ một ký ức mà địa chỉ cơ sở nằm ở mức $ a0 và tắt thiết lập $ t2, tại sao tôi không thể làm như sau:MIPS từ tải cú pháp
lw $s2, $a1($t2)
như vậy là những gì tương đương với biểu thức trên?
Bạn không thể làm điều đó bởi vì không có mã hóa lệnh MIPS hỗ trợ một điều như vậy. Bạn cần phải làm việc bổ sung bản thân:
add $a2, $a1, $t2
lw $s2, 0($a2)
Mã hóa hướng dẫn lw
trông như thế này:
1000 11ss ssst tttt iiii iiii iiii iiii
đâu sssss
là số nguồn đăng ký, ttttt
là số thanh ghi đích, và iiiiiiiiiiiiiiii
là ngay lập tức . Không có chỗ trong mã hóa đó (và không có mã hóa lệnh thay thế) sử dụng hai thanh ghi để tạo địa chỉ bộ nhớ. Các hướng dẫn máy cụ thể mà sẽ được mã hóa từ ví dụ trên là:
1000 1100 1101 0010 0000 0000 0000 0000
Kể từ khi trước mắt là 0
, $s2
là đăng ký 18
và $a2
là đăng ký 6
.
tôi yêu mips ... đơn giản như vậy – Polaris878
@ Polaris878, Yay cho RISC! –