我正在尝试找出如何将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";
}
但是,我不确定要使用这些商和余数来获得整个结果,我不确定。
答案 0 :(得分:1)
http://x86asm.net/articles/working-with-big-numbers-using-x86-instructions/#Division <-示例如何在Intel上完成类似的划分。他们将高位除法的余数用作下一个要除法的较低数的高32位。当然,如果您有类似Intel的div-64-by-32指令,则不会问这个问题。如果您要除以的数字足够小,则可以以16位为单位执行相同的操作。否则,您可能需要艰难地实现自己的划分。