私はいくつかの Linux アセンブリ マニュアルを読んでいて、printf() 関数の使用に関するアイデアを見つけました。デバッグの理由でレジスタ値をバイナリ形式で端末に出力する必要がありますが、今は単にその機能をテキストでテストしようとしています。
pushl の代わりに pushq を使用している場合、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