0

エラー チェックのために $0 と %eax を比較し、プロンプトが表示されたときに何も入力しないと、エラー メッセージは表示されません。ただし、$1 と %eax を比較して何も入力しないと、エラー メッセージが表示されます。read syscall が %eax に読み取られたバイト数を返すことは承知していますが、入力が与えられていないときに読み取られたバイトが返される理由についてはわかりません。なぜそうなのか。stdin 入力は null で終了していますか、それとも何か他のものですか?

 movl $3, %eax
 movl $0, %ebx
 movl $BUFFER, %ecx
 movl $BUFFER_SIZE, %edx
 int  $0x80

 cmpl $0, %eax
 jle  input_error

cmpl $0 が cmpl $1 に変更され、入力が与えられない場合は、input_error にジャンプし、入力が与えられない場合は cmpl $0 でプログラム フローが続行されます。

4

1 に答える 1