我有以下汇编程序,它可以在 QTSspim 中正确编译和运行,并在 QTSspim 控制台中显示正确的结果。但是,我希望观察 PCSpim-cache 中的数据段,但它没有正确编译并在输出中显示正确的结果(它在每个位置显示 0)我应该说程序计算指定的两个向量的 Kronecker 乘积在文件的数据部分。这是我的代码:
## 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 缓存的链接,这是我的实验室讲师给我的。我希望你熟悉 QTSimp。
PCSpim缓存链接:http ://www.disca.upv.es/spetit/spim.htm