【问题标题】:How is the la instruction translated in MIPS?la 指令在 MIPS 中是如何翻译的?
【发布时间】:2017-01-26 03:14:11
【问题描述】:

我知道 MIPS 中的 la 分解为 luiori 但这些指令的论据是什么?

我在这里查看了这个问题MIPS Pseudo istructions, replacements,但生成的lui 是否总是使用 4097?

考虑以下几点:

       .data
_a:    .space    4
       .text
main:  la       $s0,_a

会翻译成这个吗?

lui    $at,4097
ori    $s0,$at,0

谢谢!

【问题讨论】:

    标签: mips translation instructions


    【解决方案1】:

    4097 十进制是 0x1001。这是0x10010000的高16位。

    这是mars模拟器中.data段的默认加载地址。

    如果您已完成la $s0,main,则lui 将是lui $at,0x0040,因为.text 的默认起始地址是0x00400000。

    要查看差异,请尝试以下程序:

           .data
    _a:    .space    100000
    _b:    .space    4
           .text
    main:  la       $s0,_b
    

    【讨论】:

      【解决方案2】:

      lui 加载地址的高 16 位,ori 加载地址的低 16 位。地址可以是任何 32 位值,因此lui 通常不会加载 4097。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2021-09-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多