【发布时间】:2021-07-23 18:31:30
【问题描述】:
我目前正在学习 r5900l 处理器的 MIPS 汇编,我正在尝试从 ps2 可执行文件中读取一些代码。
lui a0, 0x002B
...
addiu a0,a0,0xC0F0
or gp,a0,zero
现在,为什么要这样做或操作? 如果我理解正确,按位或比较 a0 和零的二进制值,如果两者中至少有一个为 1,则该值为 1,否则保持 0。但如果零全为 0,那有什么意义做or操作?为什么不将 a0 寄存器加载到 gp 中?
(如果您需要更多信息,我可以发布更多代码。提前致谢!)
【问题讨论】:
-
为什么不将 a0 寄存器加载到 gp 中? 这正是它正在做的事情,这是 MIPS ISA 提供的唯一方式之一。如果您的意思是为什么不将 LUI/ADDIU 首先放入
gp,可能是未优化的代码,或者它需要两个寄存器中的值。 -
是的,我只是认为有一个命令,例如 mov gp, a0 ,但显然 mips 没有那个
-
是的,仅作为伪指令,
move gp, a0gusbro 的回答指出。您可能应该接受这个答案(在投票箭头下方打勾)。