Это всего лишь второй день моего обучения сборке ARM, и я застрял в проблеме, где я получаю ошибку сегментации в STR.
@P = Q+R+S
@Q=2, R=4, S=5
.global main
main:
adrl r4,vals
ldr r1,[r4,#Q] @load Q=2 into r1
ldr r2,[r4,#R]
ldr r3,[r4,#S]
add r0,r1,r2
add r0,r0,r3
str r0,[r4,#P]
mov r7,#1
svc 0
.equ P,0
.equ Q,4
.equ R,8
.equ S,12
vals: .space 4
.word 2
.word 4
.word 5
.align
.end
Может кто-нибудь, пожалуйста, помогите, почему его сбой?
РЕДАКТИРОВАТЬ
Я добавляю переменные в раздел данных.
@P = Q+R+S
@Q=2, R=4, S=5
.data
vals: .space 4
.word 2
.word 4
.word 5
.align
.text
.global main
main:
adrl r4,vals
ldr r1,[r4,#Q] @load Q=2 into r1
ldr r2,[r4,#R]
ldr r3,[r4,#S]
add r0,r1,r2
add r0,r0,r3
@str r0,[r4,#P]
mov r7,#1
svc 0
.equ P,0
.equ Q,4
.equ R,8
.equ S,12
.end
Компиляция и компоновка, как показано ниже:
$ as -o main.o main.s
main.s: Assembler messages:
main.s:13: Error: symbol .data is in a different section