代码之家  ›  专栏  ›  技术社区  ›  NeoZoom.lua

是否可以将链接的寄存器加载到自身?[关闭]

  •  0
  • NeoZoom.lua  · 技术社区  · 8 年前

    是否可以将链接的寄存器加载到自身?

    我的课本上有一行MIPS(R2000)汇编代码,上面写着:

    ll    $r2, 0($r2)
    

    这是对的吗?

    如果它是正确的:当原始内容 $r2 不重要,但只想将值存储到 2美元 他不想别人同时储存?

    1 回复  |  直到 8 年前
        1
  •  1
  •   PeterT    8 年前

    LL不阻止任何人存储到加载的地址,它只允许检查是否有人存储到加载的地址。

    你所发的所有指示在我看来都是合法的。在那一点上它是否有意义取决于程序还能做什么。

    地址也可能存储在其他地方,然后从其他地方读取,以便调用SC。

    参考手册中的修改示例:

    L1:
      ADD T1, ZERO, T0 # copy T0 -> T1
      LL T1, (T1)      # 
      ADDI T2, T1, 1   # increment
      SC T2, (T0)      # try to store, checking for atomicity
      BEQ T2, 0, L1    # if not atomic (0), try again
    
    推荐文章