アセンブリコードで何が間違っているのかよく分かりません。私は、いつか「メイン:」中に2つのヌルが$ A0、A1および$として入力された文字列を終了比較プログラムを書くためにしようとしている部分と、その後単純なMIPSアセンブリ
jal hamming
は、プログラムを起動するために呼び出します。
基本的にこのセクションでは、1つの文字列がnull終端文字に当たるまで、2つの文字列をcharで比較する必要があります。その後、プログラムは停止し、終了するまでにいくつの文字が異なるかを返します。
私はそれが私が使っているジャンプと関係があると思いますが、私はあまりよく分かりません。私は私のプログラム私の出力ルックスを実行すると
diffchar:
li $t4, 0
li $t5, 1
beq $a0, $a1, samechars
move $v0, $t5
j diffcharend
samechars:
move $v0, $t4
diffcharend:
jr $ra
hamming:
absvaluedone:
li $a2, 0
#li $v0, 0
move $t0, $a0
move $t1, $a1
hammingloopbegin:
lb $t2, 0($t0)
lb $t3, 0($t1)
beq $t2, $0, hammingdone
beq $t3, $0, hammingdone
la $a0, 0($t0)
la $a1, 0($t1)
jal diffchar **#this is the line that causes me problems, if I take this out it is fine**
beq $v0, $0, next
addiu $a2, $a2, 1
next:
addiu $t0, $t0, 1
addiu $t1, $t1, 1
j hammingloopbegin
hammingdone:
add $v0, $a2, $a3
jr $ra
:プログラムは一種の長いので、私は(それゆえ、初期化され、すでに定義されているの$ A3、などの変数を無視する)の問題だと思うの主要部分を取っています言っ続ける無限ループのように:
Exception occurred at PC=0x00400144
Bad address in data/stack read: 0x10021226
Exception 7 [Bad address in data/stack read] occurred and ignored
Exception occurred at PC=0x00400140
Bad address in data/stack read: 0x1002121b
Exception 7 [Bad address in data/stack read] occurred and ignored
私はdiffcharまたは私がdiffcharために周りにジャンプするために使用するプロセスと間違って何かがあると思います。これは私の初めてのアセンブリコードの記述です。だから私は本当に基本的な何かを考えています。どのポインタも素晴らしいでしょう。ヘルプ