"Доступ к невыровненной ячейке памяти, неверный адрес =ffffff"

Я пытаюсь прочитать целые числа из файла input.txt, ниже мой цикл чтения, где я пытаюсь прочитать и сохранить целые числа в массиве. Я продолжаю получать "Доступ к невыровненной ячейке памяти, неверный адрес =ffffff" в любой строке после строки с "LDR R2, [R2,R5,LSL #2]... я использую ARM SIM. Кто-нибудь знает, что я делать неправильно?

    start:
    MOV R5, #0      @int i 
    MOV R1, #0
    swi SWI_Open
    LDR R1,=InFileH
    STR R0,[R1]
    MOV R3, #0

readloop:
    LDR R0, =InFileH
    LDR R0, [R0]
    swi SWI_RdInt
    CMP R0, #0
    BEQ readdone
    @the int is now in R0
    MOV R1, R0
    LDR R3,=a
    STR R2,[R3,R5,LSR#2]
    MOV R2, R1
    ADD R5, R5, #1      @i++
    bal readloop

readdone:
    MOV R0, #0
    swi SWI_Close
    swi SWI_Exit

.data
.align 4
InFileH:    .skip 4
InFile:     .asciz  "numbers.txt"
OutFile:    .asciz "numsort.txt"
OutFileH:   .skip 4
NewLine:    .asciz "\n"

a:  .skip 400

1 ответ

Я столкнулся с подобной проблемой при программировании сборки руки
это произошло потому, что ожидалось смещение, кратное 4

STR R2, [R1, #2]

Приведенная выше инструкция выдает аналогичную ошибку. так что это было решено с помощью

STR R2, [R1, #4]

для лучшего понимания нажмите здесь

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