Получение ошибки ADR в программе y86, понятия не имею, почему. Стек, кажется, настроен хорошо

У меня есть следующая программа y86-64 из лаборатории архитектуры CMU, которая должна суммировать значения связанного списка.

    # Adam Cooper ac251190

init:
        .pos 0x0
        irmovq Stack, %rsp  # set up stack pointer
        irmovq Stack, %rbp   # set up base pointer
        call Main
        halt

# Sample linked list
.align 8
ele1:
        .quad 0x00a
        .quad ele2
ele2:
        .quad 0x0b0
        .quad ele3
ele3:
        .quad 0xc00
        .quad 0

Main:
        irmovq ele1, %rax
        pushq  %rax        # Pointer to list pushed to stack
        call   Sum
        ret

Sum:
        pushq  %rbp           # Push %rbp onto the stack
        rrmovq %rsp, %rbp
        mrmovq 8(%rbp), %rdx  # Move ele1 into %rdx
        irmovq $0, %rax       # Set up a base to add eles to
        andq   %rdx, %rdx     # Is this the end of the list?
        je     End            # If it is, jump to the end
        irmovq $8, %rcx       # Turn %rcx into a index mover

Loop:
        mrmovq (%rdx), %rbx   # Move ls into %rbx
        addq   %rbx, %rax     # val += ele
        addq   %rcx, %rdx     # Move to next value in the list
        mrmovq (%rdx), %rdx
        andq   %rdx, %rdx     # Are we at the last ele?
        jne    Loop           # If not, go again

End:
        popq %rbp # TEAR! DOWN! THE STACK!
        ret       # Return the original call to Main

        .pos 0x400
Stack:

Программа останавливается со статусом "ADR" на линии 0x093 какая линия

Loop: 
        mrmovq (%rdx), %rbx 

Теперь, я был убежден документацией, что "ADR" ошибка означала, что программа пыталась получить доступ к адресу выше 0xFFF, но это не так. Стек также, кажется, был инициализирован и настроен правильно. Я использовал тот же метод, что и несколько других написанных мной программ, которые работали нормально. Не совсем уверен, что здесь происходит не так.

1 ответ

Решение

Не берите в голову. Починил это. Изменено mrmovq 8(%rbp), %rdx в mrmovq 16(%rbp), %rdx, Спасибо всем, кто задумался о помощи

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