Я только что закончила свой MIPS класса сборки и у меня есть предложение для вас: Не используйте PC спит!
Я использовал PC Spim, Mars и Qemu, а лучшим для общей курсовой работы является Mars (Mips Assembler and Runtime Simulator). Редактор хорош, он сбрасывает много меньше, и он позволяет легко отлаживать и устанавливать точки останова. Он бесплатный, с открытым исходным кодом и создан Государственным университетом штата Миссури.
Он поставляется в формате .jar, поэтому вы можете запускать его как на Windows, так и на Linux.
[Mars Mips Emulator]
В общем случае, простой способ сказать, является ли число четным или нечетным является И (побитовое) 1 с числом и, если результат равен 0, то число четное.
Однако, поскольку мы хотим, чтобы все четные числа в серии, мы можем просто зацикливать и увеличить наш номер на 2, как в вашем опубликованном коде.
При добавлении немедленного значения вы должны использовать инструкции «addi» или «addu», а не «добавить». Вы также сказали, что хотите поместить результат в регистр $ r12, но это не действительный регистр MIP. Ознакомьтесь с ссылкой на MIPs wikipedia, чтобы просмотреть список всех регистров: MIPS - Register Usage.
Я модифицировал вашу программу для правильной работы. Он сохраняет окончательный результат в $ t1, а затем печатает окончательный результат.
.text
.globl main
main:
li $t0, 0 # $t0 = loop counter
li $t1, 0 # $t1 = sum of even numbers
loop:
addi $t0, $t0, 2 # generating even numbers in register $t0
add $t1, $t1, $t0 # compute the sum
bne $t0, 100, loop # if t0 reached 100 then go to loop.
li $v0, 4
la $a0, result
syscall # print out "Sum = "
li $v0, 1
move $a0, $t1
syscall # print out actual sum
exit:
li $v0, 10 # terminate program run and
syscall # Exit
.data
result: .asciiz "Sum = "
После запуска этого в Марс я получаю следующее:
Sum = 2550
- программа завершения работы -
Можете ли вы запустить его? У вас есть доска MIPS или эмулятор или что-то еще? –
Я использую gxemul для эмуляции архитектуры mips под управлением NETBSD http://en.wikipedia.org/wiki/GXemul – Tom
Другой эмулятор - qemu, который эмулирует кучу архитектур и систем, включая MIPS. – sigjuice