我在MIPS中了解到
对于无符号和有符号数字(例如lbu
与lb
),操作相同。
并且还了解到使用ASCII字符操作时无符号操作非常有用。
例如使用lbu
代替lb
。
但我不确定为什么。
如果$s0
的值为'0'
,则字符的十六进制值为0x30
,
那么以下两条指令是不是有相同的结果呢?如果不是,请你解释一下为什么?
lb $t1, $s0
lbu $t1, $s0
另外,添加或减去两个ASCII字符值寄存器的操作也是操作数也需要无符号操作? (add
/ sub
与addu
/ subu
)
谢谢!
答案 0 :(得分:2)
1)使用lb和lbu,当字节的MSB为0时,你会得到相同的结果,但是如果它是1,则lb将使用' 1填充剩余的3个字节,而lbu将填写' 0&#39>
2)除溢出检测外,add / sub(u)没有区别
欢迎你!