【问题标题】:Memory Access in MIPS assembly languageMIPS 汇编语言中的内存访问
【发布时间】:2015-02-19 03:26:43
【问题描述】:

我在期中考试时遇到了这个问题,我想知道正确答案是什么。 这是一个问题:
令 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

//假设 $s1 = x[4] 和 $s2 = x[5] la $s3, k 添加 $s1, $s2, $s3 //x[4] = x[5] + k

反馈说我应该有 lw 和 sw 但我不确定如何处理它们。

【问题讨论】:

  • lw 是加载字,sw 是存储字。您需要读取地址 x+(5*sizeof(word)) 处的单词(是 x + 20 吗?),这意味着来自地址 x+20 的 lw 有一种方法可以用一个 lw 做到这一点。然后你需要把它加到你知道怎么做的 k 上。然后使用 sw 将其存储到地址 x + (4*sizeof(word)) 或 x+16。

标签: algorithm memory assembly mips


【解决方案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]"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多