我必须在 MIPS 汇编(32 位)中编写一个程序,检查定点十进制数是否可以在 ieee754 中准确写入。
我知道浮动的结构,因此我这样做:
- 用逗号将数字拆分为整数和小数部分
- 将它们分别转换为整数(先到左乘以 10,然后再相加)
- 用这个 int 向右移位寄存器,直到它为零(知道位数)
但是,如果程序得到的数字是 3 个前导的,那么问题就开始了,然后我们有 40 个零。它仍然可以准确编写,但无法在我的程序中检测到(因为我将整数存储为 32 位数字)。所以我的问题是:
- 如何正确写入将单个数字更改为整数的部分?
回想一下,我必须执行 2 个操作:将我拥有的所有内容乘以 10,然后添加另一个数字
可以通过逐步移动所有内容然后在每4个寄存器上指示溢出来完成吗?
(如果 ov==1 则将较高的 reg 左移并放一个?)
也许有更好的方法使用乘法过程中的 hi 和 low 寄存器?
感谢任何帮助:)