glibc scanf Falha na segmentação quando chamada de uma função que não alinha o RSP
Ao compilar o código abaixo:
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
usando:
nasm -f elf64 example.asm -o example.o
gcc -no-pie -m64 example.o -o example
e depois corra
./example
executar, imprima:digite um número: mas depois trava e imprime:falha de segmentação (despejo de núcleo)
Portanto, o printf funciona bem, mas o scanf não. O que estou fazendo de errado com o scanf?