64 ビット Windows 7 で QtSpim 9.1.7 を実行しています。シミュレーター/設定/ MIPSの下で、すべてのオプションにチェックを入れています (「ベア マシン」、「疑似命令を受け入れる」、「遅延ブランチを有効にする」、「遅延ロードを有効にする」、「マッピングされた IO を有効にする」、「ロード例外ハンドラ」)。
次のようにハードコードされた値を保存すると、基本的なコードを実行して QtSpim に値を追加できori
ますori $t0,$0,4
。今、メモリからデータを読み込んで保存したいのですが、うまくいきlw
ません。
.text
.globl main
main:
lw $t0,num1
.data
num1: .word 4
上記のファイルを再初期化してロードすると、次のエラー メッセージが表示されます。
次にコードをステップ実行しようとすると、[00400024] 行まで到達します。その行をまたぐと、次のエラー メッセージが表示されます。
参考までに、私のコードは次のように解析されます。
User Text Segment [00400000]..[00440000]
[00400000] 8fa40000 lw $4, 0($29) ; 183: lw $a0 0($sp) # argc
[00400004] 27a50004 addiu $5, $29, 4 ; 184: addiu $a1 $sp 4 # argv
[00400008] 24a60004 addiu $6, $5, 4 ; 185: addiu $a2 $a1 4 # envp
[0040000c] 00041080 sll $2, $4, 2 ; 186: sll $v0 $a0 2
[00400010] 00c23021 addu $6, $6, $2 ; 187: addu $a2 $a2 $v0
[00400014] 0c100009 jal 0x00400024 [main] ; 188: jal main
[00400018] 00000000 nop ; 189: nop
[0040001c] 3402000a ori $2, $0, 10 ; 191: li $v0 10
[00400020] 0000000c syscall ; 192: syscall # syscall 10 (exit)
[00400024] 8c080000 lw $8, 0($0) [num1] ; 4: lw $t0,num1
私が最初に思いつくのは、それ0($0)
は確かに の住所ではないということですnum1
。私のデータ宣言は間違っていますか? もしそうなら、私は何を間違えましたか?
関連しているかどうかはわかりませんが、次のコマンドla
とli
コマンドの構文エラーが発生しました(の代替を見つけようとしていたときlw
):
la $a0,num1
li $t0,4