0

次のコードは、テキストファイルに foobar を書き込むためのものです。Hにあるtests.txtという名前。デコード中に _fopen を呼び出した後、%eax が 0 のように見えます。

blablaaa: .asciz "foobar /n"
filewritemode: .asciz "a"
filelocation: .asciz "/h/tests.txt"


_main:  

push $filewritemode
push $filelocation
call _fopen


push $blabla
push %eax 
call _fprintf
addl $16,%esp
push $0
call _exit # exit the program

問題が発生した場合に備えて、gccを使用してこれをコンパイルし、以前にprintfを正常に呼び出すことができました。サウンドの再生を試してみると、サウンドの場所を test.wav に変更するだけで機能することがわかりましたが、ここでは機能しませんでした。ところで、/H/test.txt H:/test.txt test.txt を試してみましたが、何か不足していますか? それとも、これは許可の問題でしょうか?

4

1 に答える 1

1

fprintfあなたも逆に引数を渡しています。さあ、もう少し注意してください、あなたはすでに一度この間違いを犯しています!

ただし、それは からの戻り値には影響しませんfopen。その部分は私にとってはうまくいきます。一部の環境では、スタック ポインターの 16 バイト アラインメントが必要になることに注意してください。

ちなみに、/nは改行ではありません。

于 2013-06-06T22:27:41.403 に答える