0

どうすればバッファをファイルにスローできるのか疑問に思っています。次のようにレジスタを設定できることはわかっています。

mov eax, 4
mov ebx, (file descriptor here)
mov ecx, myBuffer
mov edx, myBufferLen
int 80h

次に、次のようにファイルを閉じます。

mov eax, 6
int 80h

しかし、ファイル記述子を取得する方法がわかりません。ファイルを開くたびに、サービス ディスパッチャーを呼び出した後、eax にはファイル記述子があると誰かが私に言いました。何を試しても、新しいファイルを作成したり、現在のファイルを保存したりしません。

4

2 に答える 2

0
mov eax, 5 ; __NR_open
mov ebx, filename ; zero terminated!
mov ecx, 2 ; O_WRITE? Check me on this!
mov edx, 777q ; permissions - Check me on this, too!
int 80h
; did we succeed?
cmp eax, -4096
ja exit
mov [descriptor], eax
; and so on...
;...
xor eax, eax ; claim no error
exit:
mov ebx, eax
neg ebx
mov eax, 1 ; __NR_exit
int 80h

オープン フラグとパーミッションの「マジック ナンバー」についてはよくわかりません。新しいファイル (?) を作成するには、O_CREATE を使用してオープン フラグを「or」する必要がある場合があります。「exit:」のトリックは、(負の) ERRNO (存在する場合) を否定するので、「echo $?」で簡単に読み取ることができます。そんな感じ...

于 2013-11-10T21:28:39.667 に答える