/ home /httpdの「grades.txt」のリンクを解除するインラインアセンブリプログラムを作成しました。コードは次のとおりです。
void main()
{
__asm__(
"jmp L\n"\
"sub1:\n"\
"movl 0x4(%esp), %ebx\n"\
"movb $0xa, %al\n"\
"int $0x80\n"\
"L:\n"\
"call sub1\n"\
".string \"//home//httpd//grades.txt\" "
);
}
「/home/ httpd」のgrades.txtのリンクを解除するために、コードは私が望むことを実行すると思いますが、実行すると、セグメント障害が発生します。
そして、gdbを使用してこの障害に対処しましたが、「jmp L」行を実行できないことがわかりました。プログラムは、「ctrl + c」と入力して中断するまで、5行目["__asm __("]で停止します。
「exit(0)」のアセンブリを追加してプログラムを正常に終了させ、実行を続けると、プログラムは何もせずに終了します。
それで、これは非常に紛らわしいです、なぜプログラムはjmp命令を実行しないのですか?エラーはありますか?
よろしくお願いします!