0

我有以下汇编程序,它可以在 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

4

0 回答 0