【问题标题】:How to load and store word from/to address that index is in a register, MIPS如何从/到地址加载和存储字,该索引位于寄存器中,MIPS
【发布时间】:2013-11-23 20:07:04
【问题描述】:

如何从索引在寄存器中的地址加载和存储字?在汇编 MIPS
示例:

lw $t0, $a0($t1)  and sw $t0,$a0($t1)  

那些说明只是为了我会做的事情(不正确) 谢谢

【问题讨论】:

    标签: assembly mips mars-simulator


    【解决方案1】:

    Microchip 微控制器包含带有指令的 DSP 扩展:

    LBUX rd, index(base)  # load byte
    LHX rd, index(base)   # load half-word
    LWX rd, index(base)   # load word
    

    其中“index”和“base”是 GPR 寄存器。

    但我没有找到相同的存储说明。

    【讨论】:

    • 一个等效的存储将有 3 个寄存器输入,而负载只有 2 个输入(和一个寄存器输出)。这可能是 Microchip 添加加载版本但不添加存储的原因。主流 MIPS didn't like that lack of orthogonality,即使某些数组是只读的。后来主流 MIPS 为 FP 寄存器而不是 GPR 索引加载/存储。
    【解决方案2】:

    尝试这样做,而不是你唯一的 lw 声明:

    add $a0 $a0 $t1
    lw $t0 0($a0)
    sub $a0 $a0 $t1
    

    仅当您想将$a0 恢复为原始值时才需要最后一个 sub。

    您可以对sw 部分执行相同的操作。

    【讨论】:

    • 坦克!!!,我有另一个问题 $ao 是递增 +1 的整数,所以在将这个整数乘以 4 之后添加 sll $a0 ,$a0,2 现在它可以工作了
    猜你喜欢
    • 1970-01-01
    • 2016-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-23
    • 2023-04-04
    相关资源
    最近更新 更多