Конечно, директива .text
имеет необязательный аргумент, в котором вы можете указать адрес:
.text
.globl main
# This code ends up at the default address for the .text section
main:
li $a0,1
jal foo
li $v0,1
syscall
li $v0,10
syscall
.text 0x430000
# This code ends up at address 0x430000
foo:
li $a0,2
jr $ra
Конечно, вы не можете просто выбрать адрес случайным образом.Он должен быть действительным для целевой среды (в моем примере это QtSpim).
Другая возможность - собрать все в расположение по умолчанию, а затем скопировать части кода в ОЗУ во время выполнения и выполнить его изесть.