MIPS32 64位数字除以32位数字

时间:2018-10-06 15:46:16

标签: mips32

我正在尝试找出如何将64位数字(例如高32位存储在$ s3中,而较低的32位存储在$ s4中)除以32位数字(例如已存储)在$ s5中)。

我知道div指令只能将32位值用作输入,并且HI寄存器存储32位余数,而LO寄存器存储32位商。

知道这一点,我是否需要做以下组合:

#include <iostream>
#include <string>

using namespace std;

class strtype {
    string str;
public:
    strtype()
    {
        str = "Test";
    }

    strtype(string ss)
    {
        str = ss;
    }

    strtype operator= (strtype &st)
    {
        strtype tmp;
        tmp.str = st.str;
        return tmp;
    }
};

int main()
{
    strtype d = "NEWSPAPER";

}

但是,我不确定要使用这些商和余数来获得整个结果,我不确定。

1 个答案:

答案 0 :(得分:1)

http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/#Division <-示例如何在Intel上完成类似的划分。他们将高位除法的余数用作下一个要除法的较低数的高32位。当然,如果您有类似Intel的div-64-by-32指令,则不会问这个问题。如果您要除以的数字足够小,则可以以16位为单位执行相同的操作。否则,您可能需要艰难地实现自己的划分。