相关疑难解决方法(0)

将值存储在MIPS的HI和LO寄存器中

我写在MIPS某些代码,我已经来到这里的要求是存储结果,暂时在点HILO特殊寄存器(均为4个字节宽).这些说明由我掌握:

divu     s,t    lo <-- s div t ; hi <-- s mod t
multu    s,t    hi / lo < -- s * t ;
Run Code Online (Sandbox Code Playgroud)

因此,divu存储除法LO和余数的结果HI,同时multu存储乘法LO(低4字节)和HI(高4字节)的结果.

稍后,为了检索结果HILO寄存器,我可以:

mfhi $v0
mflo $v1
Run Code Online (Sandbox Code Playgroud)

我已经想出了如何将计算结果存储在LO:

ori     $v0,$0,1            # Store result from $a0 into LO
divu    $a0,$v0
Run Code Online (Sandbox Code Playgroud)
  • divu在LO分工的结果保存,所以我只是除以1的结果得到它.

但是,存储HI更复杂.一种方法是强制multu指令将值移位32位(4字节):

multu    $a0,0x80000000     # Shift $a0 by 32 …
Run Code Online (Sandbox Code Playgroud)

assembly mips cpu-registers spim

4
推荐指数
2
解决办法
3万
查看次数

标签 统计

assembly ×1

cpu-registers ×1

mips ×1

spim ×1