有符号运算和无符号运算的问题
- 关于误导
在MIPS中文版指令集上提到一点,希望大家引起注意:ADDU的”U”不是无符号,而是指不考虑溢出的加法,所以ADDI和ADD和ADDU实际上在ALU用的同一个加法。
- 为什么说ADD和ADDU是一种加法?而MULT和MULTU却不是一种乘法?
CPU不会判断参与运算的数字是否为有符号数,因为在计算机中加法是补码运算,补码做加法运算时带符号位运算,所以无符号加法和有符号加法在ALU运算里是一种加法。补码的转换已经在Mars编译的时候就做好了,比如你在Mars里如下书写:
ori $t1,$0,-1