在MIPS汇编中加载大于32位的整数

时间:2012-04-09 19:07:31

标签: input mips mips32

我正在开展一个学校项目(如果你不能仅仅通过我使用MIPS和QTSpim来解决这个问题),我的小组选择为大(128位)数字制作一个计算器。我们知道如何对128位数进行操作,但我们遇到的麻烦就是输入用户。

教授不太清楚怎么做,所以有人知道是否有办法使用MIPS和QTSpim加载128位整数?

MIPS寄存器保存32位整数,因此结果必须存储在4个寄存器中,但有没有办法实现呢?

谢谢!

2 个答案:

答案 0 :(得分:3)

我会:

  • 将用户输入作为字符串
  • 读取
  • 将每个数字的ASCII码转换为数字0-9(即减去'0')
  • 应用从基数10到基数2的基数转换,并将结果保存为四个32位字

答案 1 :(得分:1)

为什么8,16,32,64,128位之间存在差异?正如gusbro描述的那样验证字符串,对于每个新的数字字符乘以10并添加新的数字。你已经提到过你知道如何对128位数进行操作,所以......只需要进行操作,乘法和加法。如果您不知道如何进行操作,那么您将以10为多,其中0xA为0b1010。使用小学数学,从列0开始,任何事都是零。功率1列的基础(小学10s这里的两列)1次任何东西本身,但你移动一个位置。 fours列为零,eights列为1,因此在abcd中添加左移三列

    abcd
   x1010
   =====
    0000
   abcdx
  0000xx
 abcdxxx

因此,乘以10与将左移一个数加上左移三个数相同,使用32位寄存器移位和添加无限数位相当容易。如果需要一次16或24位,将第17位或第24位作为进位位。

如果你没有办法乘法并加128位,你就不会用128位计算器得到很多,所以也许上面没有必要。