我在期中得到了这个问题,我想知道正确的答案是什么。
这是一个问题:
令x []为整数数组, k 为整数。假设x和k的存储器地址分别由两个标签“x”和“k”指定。在mips汇编语言x [4] = x [5] + k
这是我的回答尝试,我只得到了一半的标记:
//addresses of x, k, 4, and 5
la $s0, x
la $s1, k
li $s2, 4
li $s3, 5
//assume $s1 = x[4] and $s2 = x[5]
la $s3, k
add $s1, $s2, $s3 //x[4] = x[5] + k
反馈说我应该有lw和sw但是我不知道该如何处理它们。
答案 0 :(得分:1)
假设一个"整数"表示32位字长,x [4]表示地址(x + 16),x [5]表示地址(x + 20)。
你可能应该这样做:
la $s0, x
la $s1, k
lw $s2, 0($s1) ; Get "k" from its memory location
lw $s3, 20($s0) ; Get "x[5] from its memory location
add $s2, $s2, $s3 ; Compute k + x[5]
sw $s2, 16($s0) ; Store result at location "x[4]"