Я читаю несколько руководств по сборке Linux и нашел представление об использовании функции printf(). Мне нужно, чтобы выводить значения регистров для аргументов в двоичной форме на терминал, но теперь я попробовал просто протестировать эту функцию с текстом.
Я застрял из-за segfault, когда я использую pushq вместо pushl. Как я могу изменить эту программу для вывода строк и двоичной формы регистров?
.data
input_prompt:
.string "Hello, world!"
printf_format:
.string "%5d "
printf_newline:
.string "\n"
size:
.long 0
.text
.globl main
main:
pushq $input_prompt
call printf
movl $0, %eax
ret
Он был скомпилирован GCC как:
gcc tmp.S -o tmp