0

現在、ファイルに書き込もうとしていますが、ファイルに追加する次のコードがあります。これが機能しない理由を誰かが知っていますか? それは問題なく実行されますが、最終的には何も変わりません。

filewritemode: .asciz "a"
filelocation: .asciz "/h/test.txt"

_main:  

push $filelocation
push $filewritemode
call _fopen
push $blabla
push %eax 
call _fprintf

push $result
call _printf
push $0
call _exit # exit the program

gcc は、ソース ファイルを .exe に変換するために使用されます $blabla は現在、テスト用にいくつかのランダムな文字を含む文字列です

4

2 に答える 2

2

fopenパラメータを間違った順序でプッシュしたため、機能しません。パラメータは最後から最初にプッシュする必要があります。それとは別に、パラメーターを繰り返しプッシュしていますが、それらを再度削除することはありません。この場合は、 にダイブするため機能しますexitが、代わりにret命令を返した場合、プッシュされたパラメーターの 1 つにジャンプするため、クラッシュが発生することがわかりました。

于 2013-06-05T15:54:50.390 に答える
2

引数を reversed に渡していfopenますが、エラーをチェックしていません。このような状況でltraceは、あなたの味方かもしれません。

于 2013-06-05T15:54:06.653 に答える