我正在阅读一些 linux 汇编手册,并找到了有关使用 printf() 函数的想法。我需要它以二进制形式将寄存器值以二进制形式输出到终端,但现在我只是尝试用文本测试该函数。
我被卡住了,因为当我使用 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