Tôi đang gặp sự cố khi hiểu cách hướng dẫn jal hoạt động trong bộ xử lý MIPS. hai câu hỏi của tôi là:
a) gì là giá trị được lưu trữ trong R31 sau "jal": PC + 4 hoặc PC + 8?
b) Nếu nó thực sự là PC + 8, điều gì xảy ra với hướng dẫn tại PC + 4? Nó được thực hiện trước khi nhảy hoặc nó không bao giờ được thực hiện?
Trong Patterson và Hennessy (ấn bản thứ tư), pg 113:
"nhảy-và-link hướng dẫn: Một hướng dẫn mà nhảy đến và địa chỉ, đồng thời tiết kiệm các địa chỉ của lệnh sau đây trong một thanh ghi ($ ra trong MIPS)"
'chương trình truy cập (PC): Thanh ghi chứa địa chỉ của lệnh trong chương trình được thực thi'
Sau khi đọc hai câu, nó sau đó các giá trị sa ved in $ ra phải là (PC + 4).
Tuy nhiên, trong các dữ liệu tham khảo MIPS (thẻ xanh) mà đi kèm với cuốn sách, thuật toán hướng dẫn jal được định nghĩa như thế này:
"Jump và Link: jal: J: R [31] = PC + 8 ; PC = JumpAddr "
website này cũng khẳng định rằng 'nó thực sự PC + 8', nhưng kỳ lạ, sau đó nó nói rằng kể từ khi pipelining là một chủ đề cao cấp" chúng tôi sẽ đảm nhận địa chỉ trả lại là PC +4 ".
Tôi đến từ 8086 lắp ráp, vì vậy tôi biết rằng có sự khác biệt lớn giữa việc quay lại địa chỉ và địa chỉ sau, bởi vì chương trình sẽ không hoạt động nếu tôi giả định điều gì đó không đúng. Cảm ơn.
Cảm ơn rất nhiều! Kỳ lạ thay, nhiều trang web trình bày thông tin sai (PC + 4). – ReimannCL