私は MIPS & MARS の初心者です。私のプログラムの一部として、ユーザーから文字列を読みたいと思っています。
次のような簡単なコードがあります
.globl test
.data 0x10010000
foo: .asciiz "Input a string"
.data 0x10020000
in: .asciiz "xyz"
.text 0x00400000
test:
li $v0, 54
add $a0, $zero, 0x1001
add $a1, $zero, 0x1002
add $a2, $zero, 3
syscall
アイデアは、最大で 3 の長さの文字列を 0x1002 のメモリに読み込むことです。コードを実行すると、「0x00400010 でのランタイム例外: アドレスが範囲外 0x00001001」になります。
なぜこれが起こるのですか?どうすれば修正できますか?私は何か非常にばかげたことをしているのではないかと疑っていますが、それを理解することはできません。