Сборка MIPS - sw, add, sub и т. Д.

Я пытаюсь вычислить промежуток из 10 чисел, но я застрял, прежде чем я могу начать. Я могу загрузить набор в память, используя мои команды LW, но после этого НИЧЕГО не работает. Когда я делаю дамп после выполнения НИЧЕГО не работает. 10 значений есть, но это все. Как мне добавить, вычесть или выполнить любую команду по этому вопросу? Ничего не хранится, точка.

# This program computes and prints the span of a set of ten integers Set.

.data
Set:  .word 9, 17, -7, 3, -27, 25, 42, 26, 8, -60
Span: .alloc 1

.text
        lw $1, Set($0)
        lw $2, Set($1)
        lw $3, Set($2)
        lw $4, Set($3)
        lw $5, Set($4)
        lw $6, Set($5)
        lw $7, Set($6)
        lw $8, Set($7)
        lw $9, Set($8)
        lw $10, Set($9)
        add $11,$2,$3       
        sw $11, Span($0)
        jr $31     

Моя команда add ничего не делает в этом примере, как и команда stor. Что я делаю неправильно? Нужно ли предварительно выделять каждое место, которое я хочу использовать в памяти? ($11) например. Я пробовал множество команд, и ни одна из них не делает ничего, кроме моей последней команды lw.

1 ответ

Вот что я написал в попытке создать эквивалентный код тому, что вы пытаетесь сделать:

.data
Set:  .word 9, 17, -7, 3, -27, 25, 42, 26, 8, -60
Span: .space 4 #allocate 4 bytes

.set noat #needed to use $1
.text
main:
    la $12  Set    #load the address of set
    lw $1,  0($12) #load first number into $1
    lw $2,  4($12) #load second number into $2
    lw $3,  8($12) #etc
    lw $4,  12($12)
    lw $5,  16($12)
    lw $6,  20($12)
    lw $7,  24($12)
    lw $8,  28($12)
    lw $9,  32($12)
    lw $10, 36($12)

    add $11,$2,$3 #add second and third number, store in $11       

    la $13  Span   #load the address of Span
    sw $11, 0($13) #store the sum in Span
    jr $31

Вы на самом деле не сказали, что именно пошло не так (сбой программы? Отказывается от сборки?), Поэтому я не уверен, какой совет дать, но использование регистров подозрительно - особенно $1, т.е. $, при котором мой ассемблер выиграл ' даже не позволяй мне пользоваться без предупреждения; этот регистр зарезервирован для использования ассемблером.

Другие вопросы по тегам