タグ

コンパイラとマシン語に関するbaboocon19820419のブックマーク (2)

  • コンパイラとランタイム (概略)

    この章では、 C 言語を対象に、 C のソースコードがどのような過程を経てコンパイルされ、実行されるようになるか見ていきます。 利用する言語処理系は、gcc (GNU C Compiler 改め GNU Compiler Collections)です。 この回は、皆さんに情報に触れてもらうのが主旨ですから、 練習問題などはありません。 内容も、詳しい話は全部忘れてもらってもかまいません。 とはいえ、単にファイルを眺めるだけでなく、すこしは実際にコンパイラを動かして試したりして、 馴染んでおいてください。 内容的には、知っている人なら知っているといった話ですから。 C 言語が実行ファイルになるまでの基的な流れは、授業の方でもならったように C 言語ソースコード (with マクロ) ↓ マクロ展開 C 言語 (マクロ展開済) ↓ コンパイル アセンブリコード ↓ アセンブル オブジェクトコ

  • 時代はバイナリ?低レイヤー・プログラミングの楽しさ

    胸が躍る,とはこのことだろうか。先ごろ出版された「BINARY HACKS―ハッカー秘伝のテクニック100選」(高林哲,鵜飼文敏,佐藤祐介,浜地慎一郎,首藤一幸著,オライリー・ジャパン刊)を読んだ感想だ。このは,多くのプログラマが通常さわることの少ない「バイナリ(=機械語,アセンブラ,コンパイラ)」など低レイヤー・プログラミングを“いじる”テクニック(バイナリ・ハック)を紹介するだ。 バッファ・オーバーフローを検出する,スレッド・セーフなプログラムを書く,メモリー・リークを検出する,プログラムやシステムコールのトレース方法,プログラム起動の高速化や高速化のためのプロファイル取得方法,CとC++のプログラムをリンクする時の注意点といった実用上重要なテクニックが多数解説されている。しかし「glibcを使わないで Hello worldを書く」,「自己書き換えでプログラムの動作を変える」,「

    時代はバイナリ?低レイヤー・プログラミングの楽しさ
  • 1