Когда я выполняю системную запись в подпрограмме, будет ли где-то храниться вывод? Разве выходные данные подпрограммы не всегда сохраняются в% rax?
test:
pushq %rbp
movq %rsp, %rbp
movq %rdi, %rsi
movq $format_str, %rdi
subq $8, %rsp
pushq %rdi
call sycall_subroutine
movq %rax, %rdi
call printf #segmentation fault
movq %rbp, %rsp
popq %rbp
ret
sycall_subroutine:
pushq %rbp
movq %rsp, %rbp
movq $1, %rax
movq $1, %rdi
movq 48(%rbp), %rsi
movq $1, %rdx
syscall
mov $60, %rax
xor %rdi, %rdi
syscall
movq %rbp, %rsp
popq %rbp
ret
Этот код печатает один символ. Если я удаляю системный вызов close, я получаю ошибку сегментации. Итак, как мне сохранить результат записи системного вызова, чтобы я мог что-то сделать с ним позже?