在MIPS中,有符号加法、无符号加法、有符号减法和无符号减法有什么区别?

4
add rd, rs, rt
addu rd, rs, rt
sub rd, rs, rt
subu rd, rs, rt

在MIPS中,有符号加法、无符号加法、有符号减法和无符号减法有何区别?如果它们的结果相同,那么使用有符号和无符号方法有什么意义呢?

2
在我看来,addu 是指令名称中最糟糕的之一,因为 add 和 subtract 既不能被视为有符号数也不能被视为无符号数。只有标志位和检测机制关心此事(如有符号溢出还是无符号溢出等)。Mips 不使用标志位,这使得 addu 和 add 的区别更加混淆。 - old_timer
1个回答

6
< p > u 只是意味着它们不会在溢出时陷入困境。

< p >引用自“MIPS32 Architecture For Programmers Volume II”:

< blockquote >

指令名称中的“unsigned”一词是一个错误的描述;此操作是32位模算术,不会在溢出时陷入陷阱。此指令适用于无符号算术,例如地址算术,或忽略溢出的整数算术环境,例如C语言算术。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接