Существует множество отличных примеров того, как правильно следовать соглашениям о вызовах функций 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