Assembly MIPS-为什么不能从使用load immediate存储的寄存器中加载地址?
我不明白为什么这是不允许的,并且会引起错误 下面是一个代码示例Assembly MIPS-为什么不能从使用load immediate存储的寄存器中加载地址?,assembly,mips,Assembly,Mips,我不明白为什么这是不允许的,并且会引起错误 下面是一个代码示例 .text main: li $a2, 4 li $a0, 5 li $v0, 1 # print 5 syscall li $a0, 4 li $v0, 1 #print 4 syscall # Why does these three lines below which are commented out cause an error?
.text
main:
li $a2, 4
li $a0, 5
li $v0, 1
# print 5
syscall
li $a0, 4
li $v0, 1
#print 4
syscall
# Why does these three lines below which are commented out cause an error?
#what this part should do is print 4. Instead throws an error
#lw $a0, ($a2)
#li $v0, 1
#syscall
li $v0, 10
syscall
这段代码是为了让我理解为什么您不能使用li从已初始化的寄存器(不确定这是否是正确的字)读取,假设它已使用有效的内存地址初始化,您可以<代码>4不太可能有效。注意,即使它工作,也不会打印
4
,它会打印地址4
处的内存内容(因为lw
从内存读取)。更不用说参数不应该在$a2
中。我不知道你的意思是什么?代码抛出一个错误它抛出一个错误,因为lw
试图从地址4
的内存中读取,而这是一个无效的地址。我修复了输入错误,谢谢提醒