QTSpim で正しくコンパイルおよび実行され、正しい結果が QTSpim コンソールに表示される次のアセンブリ プログラムがあります。ただし、PCSpim-cache のデータ セグメントを観察したいのですが、正しくコンパイルされず、出力に正しい結果が表示されません (各位置に 0 が表示されます)。プログラムは、指定された 2 つのベクトルのクロネッカー積を計算します。ファイルのデータ部分。これが私のコードです:
## 4/20/16
## Lab 5
.data 0x10000480
str1: .asciiz "This is lab 5, A2: \n"
str2: .asciiz "C = "
str3: .asciiz ", "
def: .word 4
ArrayA:
.word 1, 2, 3
ArrayB:
.word 8, 7, 6
arrayC:
.space 100
.text
main:
## Print str1
li $v0, 4
la $a0, str1
syscall
## Print str2
li $v0, 4
la $a0, str2
syscall
la $s0, ArrayB # Load address of B into $s0
la $s1, ArrayA # Load address of A into $s1
#la $s2, ArrayC # Load address of C into $s1
li $t0, 0 # initialize iterator
li $s3, 3 # 3 count
Kproduct:
li $t5, 1 # Load value of A
li $t1, 0 # initialize second iterator
beq $t0, $s3, End
lw $t2, ($s0)
addi $t0, $t0, 1 # Increment overall iterator
addi $s0, $s0, 4
j Kloop
Kloop:
beq $t1, $s3, Kproduct # When 3 calculations are made
mul $t4, $t2, $t5 # A*B
addi $t5, $t5, 1 # increment A
addi $t1, $t1, 1 # increment iterator
## Print next value
li $v0, 1
move $a0, $t4
syscall
## Print space
li $v0, 4
la $a0, str3
syscall
j Kloop
End:
## End
li $v0, 10
syscall
両方のコンパイラで機能しない理由を誰かが明らかにできれば、それは大歓迎です。ラボのインストラクターから使用するように指示された PCSpim キャッシュへのリンクを含めます。QTSpim に精通していることを願っています。
PCSpim キャッシュ リンク: http://www.disca.upv.es/spetit/spim.htm