タグ

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

  • コード最適化

    コード最適化 最適化とは、効率のよい目的プログラムを生成することである。「効率のよい」とはいろいろな意味がある。例えば、なるべくサイズの小さいコードを生成するのも「効率のよい」と意味にもなる。コードを小さくするためには、なるべく小さい命令コードですむスタックマシン(大抵、1バイトで表現されるためバイトコードとも呼ばれる)にし、それを仮想スタックマシンで実行する方法もこの一つである。しかし、一般的には「効率のよい」とは、速いコード、すなわち実行時間が短いコードのことをいう。また、「最適化」といっているが、「最適」は事実上は不可能であるため、ここではなるべく効率を改善するという意味である。 実行時間を短くするには、大別して以下のことを考える 命令の実行回数を減らす。より早い命令(もしくは命令の組み合わせ)を使う。 メモリ階層を効率的に使う。 並列度の高い命令を使う。 命令の数を減ら

  • コンパイラ依存のコーディングを囲む#ifdefシンボル - torutkのブログ

    Windows上でのVC++Linux上でのGCCとに対応するコードを書く際に、コンパイラ依存部分を#ifdefで切り替える場合のマクロ指定を調べました。 コンパイラがデフォルトで定義するマクロで使えそうなものは、 Linux/GCC __linux__, __GNUC__ Windows/VC++ _WIN32, _MSC_VER Linux/GCCでは__unix__も定義されるが、UNIX全体を一つの書きかたで括るのは無理な話。 __GNUC__, _MSC_VERともに、コンパイラ・バージョンが識別できる値がマクロに定義されるので、バージョン違いの対応もこのマクロで可能です。なお、__GNUC__にはメジャーバージョンの値が定義されるので、マイナーバージョンの値まで識別する必要があるなら__GNUC_MINOR__マクロを併せて使います。 GCCでデフォルト定義されるマクロ一覧を

    コンパイラ依存のコーディングを囲む#ifdefシンボル - torutkのブログ
    pneumaster
    pneumaster 2009/05/27
    #ifdefに使うシンボル/__linux__,__GNUC__か_WIN32,_MSC_VER
  • コンパイラの構造を解説 | Shinta's Site

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

    pneumaster
    pneumaster 2007/09/24
    リンクするライブラリの順番
  • 1