1

我在计算机体系结构和我的教授。未能给出满意的答复。

假设我们有一个 32 位处理器,如果我们有两个无符号整数xy,它们都大于 2 31(因此它们太大而无法正确转换为二进制补码形式)我们如何执行减法?

如果减数是一个常数,我可以看到编译器如何在静态分析中对此进行补偿。但是我们如何在运行时处理这种可能性,尤其是在像 C 这样的静态编译语言中?这只是引发溢出错误还是某些架构subu支持特殊操作?

我为 MIPS 找到的所有内容都表明它只执行二进制补码减法,但在这种情况下不应该工作,不是吗?

4

1 回答 1

1

你提出的情况不是问题。具体例子:

  0xFFFFFFFF -  0xFFFF0000
= 0xFFFFFFFF + -0xFFFF0000
= 0xFFFFFFFF +  0x00010000
= 0x0000FFFF
于 2011-04-13T05:07:19.423 回答