Использование printf в сборке приводит к пустому выводу

Я пытаюсь использоватьprintf из моего кода на ассемблере, это минимальный пример, который должен просто напечататьhello в стандартный вывод:

.section  .rodata
hello:
    .ascii  "hello\n\0"
.section .text
    .globl _start        
_start:
    movq $hello, %rdi #first parameter
    xorl %eax, %eax #0 - number of used vector registers
    call printf        
#exit   
    movq $60, %rax
    movq $0, %rdi
    syscall

Я строю это с

gcc -nostdlib try_printf.s -o try_printf -lc

и когда я запускаю его, кажется, работает: строкаhello распечатывается и статус выхода0:

XXX$ ./try_printf
hello
XXX$ echo $?
0
XXX$

Но когда я пытаюсь захватить текст, очевидно, что что-то не работает должным образом:

XXX$ output=$(./try_printf) 
XXX$ echo $output

XXX$ 

Переменнаяoutput должен иметь значениеhello, но пусто.

Что не так с моим использованиемprintf?

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

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