バリケンのRuby日記 RSSフィード

2007-10-03

[] mainとは何なのか(3)  mainとは何なのか(3) - バリケンのRuby日記 を含むブックマーク はてなブックマーク -  mainとは何なのか(3) - バリケンのRuby日記  mainとは何なのか(3) - バリケンのRuby日記 のブックマークコメント

今日も引き続き、mainの謎に迫ってみるよ。

昨日までの実験結果をもとに、ある仮説をたててみるよ。

mainとは何か、の仮説

mainの正体は、

を「main」というラベルで表しているんじゃないかな。

そして、mainが単なる「メモリアドレスへのラベル」なら、そのアドレスメモリに値をセットする(代入する)こともできる、ということなんじゃないかな。だから、

int main = 195;

とすることで、「mainが指すメモリアドレスに195という値をint型でセットして、そのあとmainが指すメモリアドレスプログラムとして(機械語として)呼び出す」というコードになるんじゃないかな?

195という数字の意味

そして「195」という数字の意味。これは、8ケタの16進数(2進数で32ビット表現)で表現すると「00 00 00 c3」だよね。でもx86系のCPUはリトルエンディアンだから、内部での表現は「c3 00 00 00」という形でメモリにセットされるはずだよね。

なので、一番最初に(機械語として)呼び出されるのは、さいしょの「c3」になるよ。そして「c3」はx86CPUでは「ret」という命令として解釈されるんだって。

じゃあ、次からはいよいよバイナリな世界にチャレンジしてみることにするよ。

トラックバック - http://rubyist.g.hatena.ne.jp/muscovyduck/20071003