gpt4 book ai didi

assembly - 当立即打印 mips 中的算术运算结果时,是否将其直接存储到 $a0 中更好?

转载 作者:行者123 更新时间:2023-12-02 02:47:13 27 4
gpt4 key购买 nike

如果要立即打印算术运算的结果,为什么还要将结果存储在不同的寄存器中并复制到$a0,而不是直接使用$a0 什么时候执行操作?这是更好的做法吗?或者它是任意的?

我从别人那里看到的常见流程是这样的:

addi $t0, $zero, 50

li $v0, 1
add $a0, $zero, $t0
syscall

这样做会不会有问题?

addi $a0, $zero, 50

li $v0, 1
syscall

最佳答案

视情况而定。

如果 syscall 修改了 $a0 的值,并且在系统调用后您仍然需要该值,那么您需要以某种方式保留它。

但是,SPIM 和 MARS 中的系统调用 模拟不会修改任何寄存器,文档中明确列出的寄存器除外。因此,如果这就是您运行代码的地方,您通常不必担心保留 $a0 的值。

另一种可能性是编写该代码的人有一些其他代码将在稍后执行 - 并且该代码假定值在 $t0 中。

或者可能是额外的指令完全没有意义。没有更多上下文就不可能说。


顺便说一句,li $t0, 50move $a0, $t0addi $t0, $zero, 50添加 $a0、$zero、$t0

关于assembly - 当立即打印 mips 中的算术运算结果时,是否将其直接存储到 $a0 中更好?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53945545/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com