从给定地址读取内存-MIPS
我是MIPS的新手,所以我对一些事情感到困惑。我的问题是,是否在程序首次编译时输入了一个值,并且该值是存储在标签中的地址(0x10010040)。如何访问存储在标签中的地址而不是标签的实际地址从给定地址读取内存-MIPS,mips,Mips,我是MIPS的新手,所以我对一些事情感到困惑。我的问题是,是否在程序首次编译时输入了一个值,并且该值是存储在标签中的地址(0x10010040)。如何访问存储在标签中的地址而不是标签的实际地址 .data input: .asciiz prompt: .asciiz "Enter the address " prompt2: .asciiz "Filling some memory aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbcccccccccccc
.data
input:
.asciiz
prompt:
.asciiz "Enter the address "
prompt2:
.asciiz "Filling some memory aaaaaaaaaaaaaaaaaabbbbbbbbbbbbbbbbbbcccccccccccc
.text
.globl main
main:
li $v0, 4
la $a0, prompt
syscall
li $v0, 8
li $a1, 32
la $a0, input
syscall
在这条路上被困太久了。我试着用lw而不是la,胡闹了一下,结果只是出错了。使用地址0x10010040应指向165061482。但它只是指向输入所在的地址,即0x1001000。我知道这是因为我正在加载输入的地址,而不是将输入的值作为地址加载,这是我的问题所在。标签不存储任何内容,只有引用某个地址的带有名称的常量。我猜你的意思是如何获取存储在某个地址的数据,然后将其用作地址。就像C中的双指针
为此,您将
lw
从地址(标签处)将数据放入寄存器(我们称之为a
),然后再次使用lw
和a作为src
,使用第二个lw
检索的数据就是您想要的数据。显示相关代码。