【问题标题】:MIPS saving address of array to a variableMIPS 将数组的地址保存到变量中
【发布时间】:2013-11-18 00:02:03
【问题描述】:
.data

    Stackarray: .word 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 
    TopStack: .word 0
    BottomStack: .word 0

.text

    la $s0, Stackarray  # stores the beginning of array into $s0
    la $a1, 4($s0)      # stores address of second element of array into $a1
    sw $a1, TopStack

TopStack 应该保存地址的值,但是当我打印 TopStack 时,它会出现一个巨大的数字:“268500996”。 我只是想验证 TopStack 是否保存数组第二个元素的地址值。真正的值应该是“10010004”

【问题讨论】:

    标签: arrays mips memory-address


    【解决方案1】:

    为什么你认为“真值”是1001004?

    我在您的代码末尾添加了以下内容

    #print data in TopStack
    lw $a0, TopStack
    li $v0, 1
    syscall
    
    #new line
    li $a0, 10
    li $v0, 11
    syscall
    
    #print address of Stackarray
    la $a0, Stackarray
    li $v0, 1
    syscall
    

    我得到了:

    268500996
    268500992
    

    所以在我看来一切都符合。

    【讨论】:

    • 好吧,TopStack 应该保存数组第二个元素的地址,它的地址是“10010004”
    • 不,它没有。在第一个元素之后是 4,即268500996。为什么你认为它有其他地址?
    • 哦,好吧,我刚刚意识到 268500996 是十进制形式的 10010004……这完全让我忽略了。因此,如果我将 268500996 减 4,这是否意味着 TopStack 将指向 Stackarray 的“0”?那么我将如何实现将新值保存到那个“0”的地址呢?本质上是在为其赋予新的价值?
    • 啊,好电话,也没有接听那个连接。我不确定我是否理解您的问题,但是在使用la 之后,您可以使用sw 存储到地址,这将是 Stackarray 的第一个元素
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-02-04
    • 1970-01-01
    • 1970-01-01
    • 2010-10-09
    相关资源
    最近更新 更多