Я пытаюсь написать программу, в которой пользователь вводит параметр, и она разветвляется и запускает программу из другого файла. Я пытался найти ответ, но мне не повезло. У меня есть все файлы, которые я хочу использовать, в одном каталоге, и я изменил их все на .global и зашел в настройки, чтобы собрать все файлы в каталоге.
.data
options: .asciiz "Enter 1 for Roadway\nEnter 2 for Equipment\nEnter 3 for Labor\nEnter 4 for Total Projects Costs\n"
.text
.global main
main:
li $v0, 4
la $a0, options
syscall
li $v0, 5
move $t0, $a0
syscall
beq $t0, 1, option1
#beq $t0, 2, option2
#beq $t0, 3, option3
#beq $t0, 4, option4
li $v0, 10
syscall
option1:
#this is where I'd like to run code from another file
jr, $ra
exec
второй, либо заменяя себя, либо ожидая выхода второй программы, прежде чем продолжить? (Разница была бы более очевидной, если бы вы не использовали универсальную среду разработки + симулятор; это разница между связыванием нескольких исходных/объектных файлов в один исполняемый файл и созданием отдельных исполняемых двоичных файлов.) - person Peter Cordes   schedule 30.10.2017jal
и возвращать из которых с помощьюjr
. Я не знаю подробностей того, как MARS позволяет вам использовать несколько файлов; в обычной системе вы бы собрали несколько исходников asm в отдельные файлы.o
и использовали компоновщик (ld
), чтобы связать их в один исполняемый файл (например, Windows.exe
, если это поможет). Другой вариант — использовать директиву.include
для включения других файлов в один источник, чтобы он строился так, как если бы это были все 4 файла. - person Peter Cordes   schedule 30.10.2017.global my_function
для экспорта меткиmy_function
, чтобы она была видна компоновщику? См. ответ Ped7g. Если это не так, отредактируйте свой вопрос с помощью минимальный воспроизводимый пример, воспроизводящий ошибку, которую вы получаете. - person Peter Cordes   schedule 05.11.2017