- アセンブラ初心者スレッド 2©2ch.net
393 :L[sage]:2019/02/27(水) 16:16:22.81 ID:eSoS/w9e - >>392
直感からすると、原因は、esp に一度も値を設定していないことが最も疑わしい。 stdlib などがリンクされている場合、start up コードの中で、esp の値が 設定された後に、main などの自分のコードへと実行が移されるが、 -nostdlib などを付けた場合、リンク時に指定した entry point から 実行が開始される。今の場合、リンク時に entry point を指定していよう なので、恐らく、最初の object file であるところの x.o の先頭アドレス であるところの _start かr実行が開始される。 push dword 42 を行ったとき、esp の値が 0 か、または、0x7fffffff などの 値になっているため、segment fault や general protection fault などが 生じると思われる。 ここまでは全て記憶と直感に頼って書いた。
|