$ Ra возвращает адрес текущей инструкции или следующей инструкции? - PullRequest
4 голосов
/ 21 августа 2011

Я очень запутался в концепции возврата адреса по $ ra.Возвращает ли он адрес текущей инструкции , которая выполняется, или команду , которая должна быть выполнена следующей ?Для объяснения используйте следующий код:

  1. Рассмотрим фрагмент кода, который вызывает три функции func_A, func_B и func_C.Инструкция 1 находится по адресу 1996. Что будет загружено в регистр $ ra при вызове каждой из трех функций?
Instruction 1
Instruction 2
jal func_A
Instruction 3
jal func_B
Instruction 4
jal func_C
Instruction 5

Заранее спасибо.

1 Ответ

9 голосов
/ 21 августа 2011

Следующая инструкция хранится в $ ra

Итак, при вызове func_A, $ ra = 2008; при вызове func_B, $ ra = 2016; при вызове func_C, $ ra = 2024.

Это логично, поскольку вы возвращаетесь из подпрограммы на jr $ra, таким образом, переходя к инструкции после вызова подпрограммы.

...