Die Verwendung von printf in der Baugruppe führt zu einer leeren Ausgabe
Ich versuche @ zu benutzprintf
aus meinem Assembler-Code, dies ist ein minimales Beispiel, das nur @ drucken sollhello
zu 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
Ich baue es mit
gcc -nostdlib try_printf.s -o try_printf -lc
und wenn ich es starte, scheint es zu funktionieren: die Zeichenfolgehello
wird ausgedruckt und der Beendigungsstatus ist0
:
XXX$ ./try_printf
hello
XXX$ echo $?
0
XXX$
Aber wenn ich versuche, den Text zu erfassen, ist es offensichtlich, dass etwas nicht richtig funktioniert:
XXX$ output=$(./try_printf)
XXX$ echo $output
XXX$
Die Variableoutput
sollte den Wert @ habhello
, ist aber leer.
Was stimmt nicht mit meiner Verwendung von printf
?