2008-07-01から1ヶ月間の記事一覧

はてな入りたい!

はてな入りたい!はてな入りたい!

Binary2.0勉強会 8

ひとまず目標は「gcc -o hoge hoge.c」で何が起きて何が出来るか理解するとかで とか第0回で言ってたので、そっち方面に進みます。 Cのソースコードが実行形式になるまでの道は長く険しいのだ。 プリプロセス コンパイル アセンブル リンク 全部を全部 gcc …

Binary2.0勉強会 7

二週間も間があきました。びっくり! 夏バテです。より正確には熱くてバテてるというより冷房が寒くて凍えてます。 関数を呼び出した際のスタックの動きをおさらい。 呼んだ時。 ebp をスタックに退避 ebp を esp に esp を必要な分だけ sub 帰る時。 esp を…

そろそろICFPC2008について一言言っておくか

気づいたら寝落ちしてて submit できなかった!!!111 まあその時点で動く子がまっすぐ進んでぶつかりそうになったら避けるだけの子だったのでどうでもいいです。 大体ボクが何をしていたか書くと、始めはホームは引力、障害物は斥力をもつようにして、…

寄り道

http://twitter.com/natsutan/statuses/854451215 cdecl とかだと EBX は破壊できないので、普通は3つまでしか使えないんじゃないかなあと思います。規約違ったり RISC だったりするとそうでもないんですかねえ。 RISC よく知らないけど何かレジスタたくさん…

Binary2.0勉強会 6

前回確認した関数の呼び出し回りを実際に逆アセして見てみましょう。 niha@hoge:~/src/c$ cat bin02.c int hoge(int i){ int ret = i; return ret; } niha@hoge:~/src/c$ gcc -c -g bin02.c niha@hoge:~/src/c$ objdump -S bin02.o bin02.o: file format elf…

Binary2.0勉強会 5

間があいた。 この辺から大分内容の信憑性が落ちるうえに説明がさらにいい加減になってくると思いますが、ちゃきちゃき参りましょう。 今回は、前回までみていたコードは一旦忘れて、アセンブラでの関数の扱いに関して簡単に触れます。 関数がどのように実装…

ポインタと配列の話続き

おはよう昼ご飯! http://yowaken.dip.jp/tdiary/20080709.html#p01 char array[] = "abc"; char *pointer = "abc"; array[0] = 'A'; pointer[0] = 'A';これなんかはよくある例なのですが、ポインタと配列の違いではなく、より厳密には「ポインタの初期化子…

ポインタと配列の違い

http://shinh.skr.jp/m/?date=20080709#p01 これで分かってたまるか!!!!11 ちなみに配列の方は落ちないけれどポインタの方は落ちます。タダのアドレスが入っちゃうので。 例によって例のごとく文字列に機械語が埋め込まれていますね。 08049540 <main>: 8049</main>…

Binary2.0勉強会 4

前回5行目まで順に見ていったので、6行目からまた見ていってもいいのですが、ただ順を追って見ていってもどの部分がどの部分に対応しているか分からないと何ともなりませんね。 そんなわけで今回はまずCのソースコードとの対応を取るところから。 コンパイル…

のヮッ☆

はて☆すたの画像を変更した。 のヮッ☆

Binary2.0勉強会 2

前回は逆アセして出力するところまでいきました。 今回は命令の説明とかレジスタの説明とかで。途中で終わりそうだな。 前回出力した逆アセ結果をもう一度貼ります。 00000000 <main>: 0: 8d 4c 24 04 lea 0x4(%esp),%ecx 4: 83 e4 f0 and $0xfffffff0,%esp 7: ff </main>…

Binary2.0勉強会 1

アセンブラを勉強しよー。 その前に簡単に計算機について。計算機というのは基本的にはCPUさんが色々頑張る物体なのですが、計算機さんは機械語という言語を喋る子で、その機械語であれしろこれしろと命令されないと自分からこっちの意志を汲み取って何かし…

Binary2.0勉強会 0

最近ちょっとウェッブウェッブしすぎた。あえて言い直すとウェブりすぎた。 ので、バイナることにしたいと思います。 ということで、すごい突然ですが一人勉強会の始まり始まりです。 ひとまず目標は「gcc -o hoge hoge.c」で何が起きて何が出来るか理解する…

Binary2.0勉強会 3

レジスタとスタックの説明が前回いい加減な感じで終わったので、今回はいい加減逆アセ結果見ながら命令の解説とかしますが、勿論ボクはあんまり分かってない。 とりあえずその前に、命令のリファレンスを「IA-32 インテル(R) アーキテクチャ・ソフトウェア・…

ゆとりかわいい!

たんぶらにも書いたんですが何かはてなの話ぽいので少しだけコピペな感じで。 http://d.hatena.ne.jp/kajuntk/20080702/1215002592 能動的なコミュニケーションの促進がWEBの本質であるなら、足りない世代が、"本とWEBの知識を両方獲得しているそれ以前の世…