1
我知道在MIPS中, 对于无符号和有符号数(例如lbu
与lb
)有相同的操作。以ASCII码字符值为寄存器的指令作为MIPS中的操作数
而且还了解到,使用ASCII字符操作时,无符号操作很有用。 如使用lbu
而不是lb
。
但我不知道为什么。 如果$s0
的值为'0'
字符,则该字符的十六进制值为0x30
, 那么是不是以下两条指令具有相同的结果?如果不是,你能解释我为什么吗?
lb $t1, $s0
lbu $t1, $s0
另外,作为操作数还需要无符号操作的是带有两个ASCII字符值的寄存器的加减操作吗? (add
/sub
与addu
/subu
)
谢谢!
对于值0x30,是的,这些几乎是等价的,但不适用于,比如说0xab ...另外,尽管我根本不了解MIPS,但可能有不同的CPU标志(零,符号,溢出等)受到无符号负载与有符号负载的不同影响。您必须查阅指令集参考才能知道...... – twalberg
MIPS CPU没有标志。 – markgz