Есть идеи, почему я получаю ошибку выравнивания?Ошибка возникает при выполнении la $t0, mainF
, хотя аналогичная строка la $t0, mainB
выполняется просто отлично.Это мой первый раз кодирование в MIPS, поэтому я провел небольшое исследование и имел смутное представление о том, что означает выравнивание адресов, но компилятор даже не дошел до той части, где я добавил 4, прежде чем выдать мне это исключение во время выполнения.
.data
mainF:
.byte 1
mainB:
.byte 1
mainN:
(has '.word's, generic tests for the program itself)
newline:
.asciiz "\n"
textFw:
.asciiz "The integers in order:\n"
textBw:
.asciiz "The integers in backwards order:\n"
.text
main:
# Function prologue
addiu $sp, $sp, -24 # allocate stack space -- default of 24 here
sw $fp, 0($sp) # save caller's frame pointer
sw $ra, 4($sp) # save return address
addiu $fp, $sp, 20 # setup main's frame pointer
# Put mainF into $s0
la $t0, mainF
lw $s0, 0($t0)
# Put mainB into $s1
la $t0, mainB
lw $s1, 0($t0)
...