我写在MIPS某些代码,我已经来到这里的要求是存储结果,暂时在点HI和LO特殊寄存器(均为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字节)的结果.
稍后,为了检索结果HI和LO寄存器,我可以:
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)