0

我正在做一个学校项目(如果你不能仅仅因为我使用 MIPS 和 QTSpim 就知道的话),我的团队选择为大(128 位)数字制作一个计算器。我们知道如何对 128 位数字进行操作,但我们遇到的问题是用户输入。

教授不太清楚该怎么做,那么有谁知道是否有办法使用 MIPS 和 QTSimp 加载 128 位整数?

MIPS 寄存器保存 32 位整数,因此结果必须存储在 4 个寄存器中,但有没有办法做到这一点?

谢谢!

4

2 回答 2

3

我会:

  • 将用户输入读取为字符串
  • 将每个数字的ASCII码转换为数字0-9(即减去'0')
  • 应用从基数 10 到基数 2 的基数转换,并将结果保存在四个 32 位字中
于 2012-04-09T19:28:39.023 回答
1

为什么 8、16、32、64、128 位之间存在差异?正如 gusbro 所描述的,您验证字符串,对于每个新数字字符乘以 10 并添加新数字。您已经提到您知道如何对 128 位数字进行运算,所以......只需进行运算、乘法和加法即可。如果您不知道如何进行操作,那么您将乘以 10,即 0xA 即 0b1010。使用小学数学,从个数列开始 0 次任何值都为零。电源 1 列的基础(小学 10 秒,这里的双列)1 次任何事物本身,但您移动到一个位置。四列是零,八列是 1 所以添加 abcd 左移三列

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

所以乘以 10 与将左移 1 的数字加上左移 3 的数字相乘相同,使用 32 位寄存器移位和添加无限位数相当容易。如果需要一次执行 16 或 24 位,则将第 17 位或第 24 位作为进位位。

如果您没有办法将 128 位相乘和相加,那么使用 128 位计算器就不会走得太远,所以上述内容可能是不必要的。

于 2012-04-15T17:14:18.137 回答