首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将$t5存储到$t7中

如何将$t5存储到$t7中
EN

Stack Overflow用户
提问于 2013-09-19 11:33:59
回答 2查看 186关注 0票数 2

下面是我的代码:

代码语言:javascript
复制
.data
inputOne: .word 2 # Value 1
inputTwo: .word 3 # Value 2
counter: .word 0  # Adds the amount of times that we go through the loop
sum: .word 0      # Where the result of the addition goes
random: .word 0


.text
main:

    lw $t2, inputOne  # Load 2 into register t2
    lw $t3, inputTwo  # Load 3 into register t3
    lw $t4, counter   # Load 0 into register t4
    lw $t5, sum       # Load 0 into register t5
    lw $t7, random
    topOfLoop:        # Start of the loop
    beq $t4, $t2, bottomOfLoop  # Until t4 is equal to t2, the loop will continue
    addi $t5, $t5, 3  # Adds 3 to register t5 ( Sum) 
    addi $t4, $t4, 1  # Adds 1 to register t5 (Counter)
    j topOfLoop       # Jumps to the top of the loop
    bottomOfLoop:     # End of the loop 
    sw $t7, 0($t5)

当我在MIPS中运行它时,我得到以下错误:

代码语言:javascript
复制
Exception occurred at PC=0x0040005c
Unaligned address in store: 0x00000006

有没有人可以告诉我我做错了什么?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2013-09-19 11:56:07

我不知道您想要做什么,但是sw $t7, 0($t5)读起来像是将$t7的值存储在地址$t5 + 0中。从前面的代码可以看出,$t5不是一个内存地址,而是一个标量值(求和的结果)。

如果你想把求和的结果存储回由" sum“表示的内存位置,那么你应该执行sw $t5, sum

票数 2
EN

Stack Overflow用户

发布于 2013-09-19 12:18:45

像大多数其他架构一样,MIPS不允许非对齐访问。在您的示例中,在将sum地址加载到$t5后,将其添加3,这会导致地址未对齐(如果之前是4的倍数,或者通常是与4n +1不同的任何值)。因此,将值存储到地址$t5会导致异常

代码语言:javascript
复制
lw $t5, sum       # Load 0 into register t5
...
addi $t5, $t5, 3  # Adds 3 to register t5 ( Sum) 
...
sw $t7, 0($t5)

如果要将新计算的值存储到$t7所指向的地址,则应执行以下操作

代码语言:javascript
复制
sw $t5, 0($t7)

如果您想像标题所说的那样将$t5存储到$t7,可以使用$zero添加它

代码语言:javascript
复制
add $t7, $t5, $zero

或使用宏

代码语言:javascript
复制
move $t7, $t5

它恰好扩展到上面的那个

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18885769

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档