【发布时间】:2014-07-11 17:54:29
【问题描述】:
mult 指令可以将两个 32 位整数相乘,得到 64 位结果。结果的高 32 位 (32 - 63) 保存在 Hi 中,低位 (0 - 31) 保存在 Lo 中。乘法后,我可以使用mfhi 和mflo 将结果移动到寄存器。但显然不可能将 64 位的数字写入 32 位的寄存器。如何将结果存储回寄存器并使用它?我应该将每个部分保存在单独的寄存器中并将它们连接起来吗?
【问题讨论】:
-
@BrettHale 您发布的链接是关于将数据从寄存器移动到 Hi 或 Lo。我的问题是相反的。事实上,我想知道如何将 HI 和 Lo 的 64 位数字存储在 32 位长的寄存器中并对其进行操作。
-
显然你不能。您必须将产品处理为 64 位。如果高位字为零,则低位字可以用作 32 位。
-
如果 Hi 不为零?