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
的内存中读取,而这是一个无效的地址。我修复了输入错误,谢谢提醒