アライメントエラーが発生する理由は何ですか?同様の行la $t0, mainB
がうまく実行されても、la $t0, mainF
を実行するとエラーが発生します。これはMIPSでの初めてのコーディングなので、いくつかの研究を行い、アドレスの整列の意味をあいまいにしていますが、コンパイラはこのランタイム例外を投げる前に4を追加する部分に到達しません。あなたは次の宣言持っワード境界(MIPS)にアドレスがフェッチされない
.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)
...
あなたの馬を持って、私はそれが行番号を表示していないことを認識していませんでした。私はそれを指摘した。より良い?それが私にそのエラーを投げかけている理由を説明することさえ助けになります。 (これは私がヘルプフォーラムを使用することを躊躇する理由です。誰も助けたいと思っていません) – Alyssa
あなたの質問を書いて、簡単に答えることができる方法を示しました。 – Gabe