【问题标题】:MIPS store word/load wordMIPS 存储字/加载字
【发布时间】:2015-03-02 18:50:32
【问题描述】:

这里有一个非常基本的问题。 寄存器可以同时具有值​​和地址吗?假设我想在值之间交换: 5 存储在 t0 和 7 存储在 t1 此代码是否有效:

sw $t0, 0($t0)
sw $t1, 0($t1)
lw $t1, 0 ($t0)
lw $t0, 0 ($t1)

对不起,这听起来很愚蠢

【问题讨论】:

    标签: mips instructions instruction-set


    【解决方案1】:

    并非真的适用于所有值,因为 swlw 需要正确对齐(有效地址应该是 4 的倍数)。

    也就是说,您的代码仅适用于 4 的倍数,无论如何这样做是个坏主意,因为您基本上会在您指向的任何地址上写垃圾。

    要在不覆盖第三个寄存器的情况下交换寄存器,您可以使用以下技巧:

     xor $t0, $t0, $t1
     xor $t1, $t0, $t1
     xor $t0, $t0, $t1
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-17
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      • 2019-06-01
      • 1970-01-01
      相关资源
      最近更新 更多