Существует множество замечательных примеров того, как правильно следовать соглашениям о вызовах функций MIPS.Тем не менее, я застрял на том, как использовать функцию только тогда, когда "вызывается" .Следующий код напечатает 51 (с использованием MARS):
.data
strproc: .asciiz "procedure example"
strnl: .ascii "\n"
.text
printnl: li $v0, 1
li $a0, 5
syscall
#jal printnl
li $v0, 1
li $a0, 1
syscall
Однако я действительно хотел бы иметь возможность выполнять инструкции, связанные с меткой printnl
, только при переходе и привязке (когда вызывается).«).Это возможно в MIPS?Не стесняйтесь критиковать мои склонности к дизайну как часть вашего ответа.Я не уверен, как мне следует написать простую ассемблерную программу, которая может нуждаться в большом количестве повторяющихся инструкций.
Я пробовал это (но это не ассемблирует):
.data
strproc: .asciiz "procedure example"
strnl: .ascii "\n"
printnl: li $v0, 1
li $a0, 5
syscall
.text
li $v0, 1
li $a0, 1
syscall
jal printnl