有一个问题我不能完全理解,因为各种答案我都看到了,这是说明集:
lui $1,0xffffff00 ori $12,$1,0x0000ffff sra $10,$12,0x00000010 and $8,$12,$10
问题是,如果将Ori指令改为addi,$8的值是多少?
iih3973s1#
问题是有许多MIPS汇编程序,而且这些汇编程序各不相同,因此您必须知道您正在使用哪一个汇编程序,以了解您实际得到的是什么机器代码(或者它是否会接受该输入)。然后,从机器代码,我们可以严格遵循MIPS规范,并确切地知道代码序列将做什么。然而,addi与ori在MIPS上的主要区别--除了“加”与“或”部分之外--在于,尽管它们都是具有16位立即数的I型指令,但是addi将使用***符号扩展***将16位立即数变为32位以用于加法,而X1 M3 N1 X将应用***零扩展***以将16位立即数变为32位用于逻辑OR运算。否则,由于$1中的低位无论如何都是零,因此实际的add与or没有区别:如果没有进位,add与or是相同的,加到0时没有进位。
addi
ori
$1
1条答案
按热度按时间iih3973s1#
问题是有许多MIPS汇编程序,而且这些汇编程序各不相同,因此您必须知道您正在使用哪一个汇编程序,以了解您实际得到的是什么机器代码(或者它是否会接受该输入)。
然后,从机器代码,我们可以严格遵循MIPS规范,并确切地知道代码序列将做什么。
然而,
addi
与ori
在MIPS上的主要区别--除了“加”与“或”部分之外--在于,尽管它们都是具有16位立即数的I型指令,但是addi
将使用***符号扩展***将16位立即数变为32位以用于加法,而X1 M3 N1 X将应用***零扩展***以将16位立即数变为32位用于逻辑OR运算。否则,由于
$1
中的低位无论如何都是零,因此实际的add与or没有区别:如果没有进位,add与or是相同的,加到0时没有进位。