glibc scanf Fallos de segmentación cuando se llama desde una función que no alinea RSP
Al compilar el siguiente código:
global main
extern printf, scanf
section .data
msg: db "Enter a number: ",10,0
format:db "%d",0
section .bss
number resb 4
section .text
main:
mov rdi, msg
mov al, 0
call printf
mov rsi, number
mov rdi, format
mov al, 0
call scanf
mov rdi,format
mov rsi,[number]
inc rsi
mov rax,0
call printf
ret
utilizando
nasm -f elf64 example.asm -o example.o
gcc -no-pie -m64 example.o -o example
y luego ejecuta
./example
corre, imprime:Introduzca un número: pero luego se bloquea e imprime: Falla de segmentación (núcleo volcado)
Así que printf funciona bien pero scanf no. ¿Qué estoy haciendo mal con scanf entonces?