Я только начал изучать сборку MIPS и не могу понять, как условно вернуться к процедуре caller
.Пример прояснит мой вопрос.У меня есть процедура caller
, которая что-то делает перед вызовом multiply
, я хочу, чтобы эта процедура выполнялась other things
после завершения multiply
.Я знаю, как использовать условия для перехода к меткам, но вместо beq $t3, 80, caller
я хочу вернуться к caller
сразу после jal multiply
.Я знаю, что для возврата вы должны использовать jr $ra
, но я могу назвать его, используя условие?
caller:
doing_somehing
jal multiply
other_things
multiply:
beq $t3, 80, caller
lw $t4, array($t3)
mul $t4, $t4, $t1
sw $t4, array($t3)
addi $t3, $t3, 4
j multiply
Сборка должна вести себя так, как этот код C:
void caller()
{
doing_something();
multily();
other_things();
}
void multiply()
{
int i = 0;
while (i < 80)
{
someUnrelated();
i += 4;
}
return;
}