我正在阅读一些Linux汇编手册,发现可以使用printf()函数的想法。出于调试原因,我需要将寄存器值以二进制形式输出到终端,但现在我只是尝试使用文本来测试该函数。
我遇到了困难,因为当我使用pushq而不是pushl时,出现了segfault错误。如何更改此程序以输出字符串和寄存器的二进制形式?
.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