ASM x64 scanf printf double, GAS

Я не могу понять, почему этот код не работает для меня. Мне нужно использовать функцию scanf для двойного и затем printf для того же двойного. При использовании этого кода результаты не являются хорошими. Я вижу довольно случайные символы.

.data

d1: .double


format: .asciz "%lf\n"
format2: .asciz "%lf"

.text
.globl main

main:

subq $8, %rsp

#scanf 
movq $0, %rax
movq $d1, %rsi
movq $format2, %rdi
call scanf
addq $16, %rsp

#printf 
movq $1, %rax
movsd d1, %xmm0
movq $format, %rdi
call printf     
addq $16, %rsp

#exit
movq $1, %rdi
xorq %rax, %rax
call exit

Ответы на вопрос(1)

Ваш ответ на вопрос