我是MIPS的新手,所以我对某些事情感到困惑。我的问题是,如果我在程序首次编译时输入了值,并且该值是存储在标签中的地址(0x10010040)。如何访问标签中存储的地址而不是标签的实际地址?
.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应指向1650614882.但它只是指向输入所在的地址0x1001000。我知道这是因为我正在加载输入的地址而不是将输入的值加载为地址,这是我的问题。
答案 0 :(得分:0)
标签不存储任何内容,只有名称引用某个地址的常量。我猜你的意思是如何将数据存储在一个地址,然后将其用作地址。就像C中的双指针一样。
为此,您需要lw
来自地址(在标签处)的数据到寄存器(我们称之为A
),然后再次使用lw
和A作为src
,使用第二个lw
检索的数据就是您想要的数据。