タグ

コンパイラに関するmtbtaizoのブックマーク (3)

  • コンパイルの段階 -- コンパイルを途中で止める

    図3.2からは、hello.c→hello.s→hello.o→helloというようにファイルが変換されてコンパイルが行われている様子がわかります。 hello.sのアセンブラのソースの段階まではテキストファイルであり、そのまま中身を表示することができます。それ以降の、リロケータブルオブジェクトファイルのhello.oと実行バイナリファイルのhelloはバイナリファイルのため、GNU binutilsに含まれるobjdumpという一種の逆アセンブラを使って表示しています。 なお、ここではgccに、最適化オプションの「-O2」のほかに、別の最適化オプションのひとつである-fomit-frame-pointerを付け、アセンブラのコードがさらに小さくなるようにしています。 図3.2 コンパイルの段階によるファイルの中身の移り変わり hello.c #include <stdio.h> int

    コンパイルの段階 -- コンパイルを途中で止める
  • 第7回 Chapter 3 コンパイラのオプションとコンパイルの段階 | gihyo.jp

    出力ファイル名を指定 -o gccを使ってコンパイルした実行バイナリファイルのファイル名は、そのソースファイルがhello.cであってもmyprog.cであっても、すべてa.outという名前になります。このファイル名を変更するには、-o 出力ファイル名というオプションを使用します。 通常は、hello.cをコンパイルすれば、同じ名前のhelloという実行バイナリファイルができるようにするとよいでしょう。つまりhello.cの場合は-o helloです。 具体的なコマンドラインは、 $ gcc -o hello hello.c となります。これで、helloというファイル名の実行バイナリファイルができるので、これをhelloというコマンド名で実行できます。実際にはカレントディレクトリのPATHを指定するため「./」を頭につけて実行し、 $ ./hello Hello World となります。

    第7回 Chapter 3 コンパイラのオプションとコンパイルの段階 | gihyo.jp
  • コンパイラの構造を解説 | Shinta's Site

    はじめに 久しぶりに Aho氏, Sethi氏, Ullman氏の書いた Compilers(レッド・ドラゴン・ブック)という書籍を目にしたので、昔、コンパイラを作った時の事を思い出しながらコンパイラについてまとめてみました。 Translator (翻訳) Translatorとは、一つのプログラミング言語(Source Language: 原始言語)で書かれたプログラムを入力として取り、別の言語(Object Language or Target Language: 目的言語)のプログラムとしてつくり出すプログラムです。 原始言語が FORTRAN, C, Pascal などの高水準言語で、目的言語がアセンブリ言語や機械語といったような低水準言語である時、そのような Translator をコンパイラ(Compiler) と呼びます。また、原始言語がアセンブリ言語で目的言語が機械語であ

  • 1