0
\n
(LF - 改行)が文字列の最後にない場合、なぜGASアセンブリのprintf
で何も印刷できないのですか?改行文字を\n
に置くと、行が印刷されますが、\n
を削除すると行が印刷されません。誰かが私に理由を教えてくれますか?Printf with gas assembly
.extern printf
.section .data
hello:
.string "Hello!" # doesn't print this way when \n is missing
.section .text
.globl _start
_start:
nop
movl $hello, %edi
movl $0, %eax
call printf
_end:
movq $60, %rax #use the _exit syscall
movq $0, %rdi #return error code 0
syscall #make syscall
あなたはエントリポイントとして 'main'を使用し、(printf'はの一部である'という)Cライブラリを使用したいと 'exit'システムコールを使用しない場合。バッファされた行が印刷されないように、Cライブラリを適切にシャットダウンしないでください。 PS:あなたの質問が壊れた書式で出てきたら、次回に自分で修正してください。必要に応じてプレビューを使用します。 – Jester
出力する文字列の定義に '.string'の代わりに' .asciz'を試してください。 – zx485
申し訳ありませんJesterはあなたに高い基準を満たしていないためです。 – morophla