Итак, в этом коде я принимаю пользовательский ввод для определенного термина в ряду Фибоначчи. И я хочу вывести номер. Я сделал петлю и попытался напечатать результат. Однако выдается сообщение об ошибке «collect2: error: ld вернул 1 состояние выхода». Не выполняет. Также есть немного ресурсов для этого синтаксиса ассемблера, поэтому я не могу хорошо его изучить.
Код:
.cpu cortex-a53
.fpu neon-fp-armv8
.data
string: .asciz "Enter a Fibonacci term: "
scan: .asciz "%d"
result: .asciz "The %dth Fibonacci number is: %d\n"
.text
.align 2
.global main
.type main, %function
main:
push {fp, lr} @pushes on to stack
add fp, sp, #4 @adds the bytes to the stack
ldr r0, =string @loads string prompt into r0
bl printf @prints the string
sub sp, sp, #4 @allocates memory for sp
ldr r0, =scan @loads scan into r0
mov r1, sp @sp is moved to r1
bl scanf @branches to scanf
add sp, sp, #4 @creates bytes on stack
forloop:
cmp r0, #0 @compares user input to 0
bgt myexit @closes program if input is 0
mov r2, #0 @stores first term of fib
mov r3, #1 @stores second term of fib
add r2, r2, r3 @adds r2 & r3 then overwrites r2
bl forloop
ldr r6, =result
bl printf