почему я получаю ошибку сегментирования в инструкции Arm Assembly str

#arm

#arm

Вопрос:

Я начинаю использовать сборку Arm, у меня возникает ошибка segmentaion в строке str. Я думаю, что регистр имеет адресную память о var3 и сохраняет значение в памяти var3, используя регистр 11.

Я не думаю, что есть какие-либо проблемы с моим кодом.. Пожалуйста, решите мой код ошибки.

exam.s

 .text
.global main
main:
adr r3, var1
ldr r0, [r3]
mov r0,r0, LSL #2
adr r3, var2
ldr r1, [r3]
and r1,r1,#15
orr r1,r0,r1
adr r11,var3
str r1,[r11],#4

mov r0,#0
mov r7,#1
swi 0
var1: .word 10
var2: .word 20
var3: .word 0
  

Комментарии:

1. Пожалуйста, можете ли вы отформатировать свой код. Невозможно прочитать как есть.

2. Если ответ недостаточно исчерпывающий для вас, вам, вероятно, следует прокомментировать его. Вы определенно не должны публиковать свой собственный «ответ», который является продолжением вопроса. Вы можете отредактировать свой вопрос, чтобы добавить детали к описанию проблемы.

Ответ №1:

Ваши переменные находятся в .text разделе, который недоступен для записи в нормальных системах (по соображениям безопасности и эффективности). Поместите .data объявление раздела перед объявлениями переменных.