我在计算机架构和我的教授。无法给出满意的答案。
假设我们有一个32位处理器,如果我们有两个无符号整数 x 和 y ,两者都大于2 31 (因此它们太大而无法正确转换为二进制补码形式)我们如何进行减法?
如果减数是常数,我可以看到编译器如何在静态分析中对此进行补偿。但是我们如何在运行时处理这种可能性,特别是在像C这样的静态编译语言中呢?这只是抛出溢出错误还是做一些架构subu
支持特殊操作?
我为MIPS找到的所有东西都说它只是执行两次补码减法,但是在这种情况下这应该不起作用,不是吗?
答案 0 :(得分:1)
你提出的情况不是问题。具体例子:
0xFFFFFFFF - 0xFFFF0000
= 0xFFFFFFFF + -0xFFFF0000
= 0xFFFFFFFF + 0x00010000
= 0x0000FFFF