Я пытаюсь использовать printf
из моего кода ассемблера, это минимальный пример, который должен просто печатать hello
в stdout:
.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
?