Mam problem ze zrozumieniem, w jaki sposób instrukcja działa w procesorze MIPS. Moje dwa pytania:
a) Jaka jest wartość przechowywana w R31 po "JAL": PC + 4 lub PC + 8?
b) Jeśli to naprawdę PC + 8, co dzieje się z instrukcją na PC + 4? Czy jest on wykonywany przed skokiem, czy też nigdy go nie wykonuje?
w Patterson i Hennessy (czwarta edycja), str 113:
„jump-and-link instrukcja: instrukcja, która skacze do i adres, a jednocześnie oszczędza adres poniższej instrukcji w rejestrze ($ ra w MIPS)”
«licznik programu (PC): rejestr zawierający adres instrukcji w programie wykonywane»
Po przeczytaniu tych dwóch stwierdzeń wynika, że wartość SA w $ ra powinien być (PC + 4).
Jednak w danych referencyjnych MIPS (zielona karta), które pochodzi z książki, algorytm Jal wykładowym jest zdefiniowane tak:
„Jump and Link: jal: J: R [31] = PC + 8 ; PC = JumpAddr „
Ten website stwierdza również, że«to naprawdę PC + 8», ale dziwnie, po czym mówi, że ponieważ rurociąg jest zaawansowanym wątek” my zakładamy, że adres zwrotny jest PC +4 ".
Pochodzę z zespołu 8086, więc zdaję sobie sprawę, że istnieje duża różnica między powrotem do adresu a podążającym za nim, ponieważ programy nie będą działały, jeśli po prostu założę coś, co nie jest prawdą. Dzięki.
Wielkie dzięki! Co dziwne, wiele stron internetowych przedstawia złe informacje (PC + 4). – ReimannCL