Questions about assembly code

-1

I am learning how to code in assembly so i am a noob. I wrote this code where it adds the 3 first elements in the array and saves it to the 4th element in the array however i am getting an error however i don't understand its meaning and what i have done incorrectly.

this is the error line 19: Runtime exception at 0x00400040: address out of range 0x00000018

    .text
    .globl main

main:   la $t0, i
    la $s0, sum 
    la $t3, array 
    la $t5, k 

    lw $t0, 0($t0)
    lw $s0, 0($s0)
    lw $t3, 0($t3)
    lw $t5, 0($t5) 

Loop:   
    add $s0, $s0,$t3, # adds sum with element in array
    addi $t3, $t3, 4   # add 4 to array to get next element
    addi $t0, $t0, 1   #add + to i
    bne $t5, $t0, Loop # if k !=i back to loop
    sw $s0, 12($t3)  #store sum in 4th element of array
    nop

    .data 0x10010000
i:  .word 0
k:  .word 3
sum:    .word 0
array:  .word 0:2
assembly
asked on Stack Overflow Sep 16, 2014 by user998316 • edited Sep 16, 2014 by user998316

1 Answer

0

I don't recognize this assembly at all and considering the overwhelming responses I think nobody else does either but after some inspection I think you are mixing values and addresses!
In

add $s0, $s0,$t3, # adds sum with element in array

you use $t3 with the value from the array
and in

addi $t3, $t3, 4   # add 4 to array to get next element

you expect $t3 to contain an address. You can't have both at the same time.

answered on Stack Overflow Oct 5, 2014 by Sep Roland

User contributions licensed under CC BY-SA 3.0