トップページ > プログラム > 2019年02月27日 > eSoS/w9e

書き込み順位&時間帯一覧

38 位/207 ID中時間01234567891011121314151617181920212223Total
書き込み数0000000000000000200000002



使用した名前一覧書き込んだスレッド一覧
L
アセンブラ初心者スレッド 2©2ch.net

書き込みレス一覧

アセンブラ初心者スレッド 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 などが
生じると思われる。

ここまでは全て記憶と直感に頼って書いた。
アセンブラ初心者スレッド 2©2ch.net
396 :L[sage]:2019/02/27(水) 16:37:51.36 ID:eSoS/w9e
>>392
「x86」と言っても、OS によって変わってきて、Windows などなら、確か、
ライブラリを全くリンクしない場合でも、最初から esp は、一応、
「使える状態」に設定されていたと(心の中に)記憶している。
つまり、esp は、最初からOSが用意した何らかのメモリ・ブロックの底に
設定された状態で exe の実行が開始されると思う。

組み込みなどでは、esp の値は 0 みたいな値になっているかもしれない。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。