[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

12. GCC と互換性

GCC の第一の目標は、品質の良い、高速なコンパイラを、 GNU システムが 動作することをねらいとするクラスのマシン向けに作ることであった。 そのクラスのマシンとは、32 ビットマシンで、8ビットを一バイトとする アドレッシングを持ち、汎用レジスタがたくさん持つものである。 洗練されているとか、理論的な能力とか簡潔さなどは二の次である。

GCC はターゲット機種についての情報のほとんどを、機種記述から 得る。機種記述はその機種の命令毎に代数式を与える。これはターゲットを 記述する方法としては非常に明解な方法である。ただし、コンパイラが、 この形式で表現するのが困難な情報が必要な時は、筆者は機種記述に その場しのぎのパラメータの定義をためらわずに入れる。移植性の目的は コンパイラについて必要な全作業を少なくすることにあり、それ自身には 興味がない。

GCC は機種依存コードは含んでいないが、エンディアン(最上位バイトが ワードの中のバイトの最上位アドレスを占めるのか、最下位アドレスを占めるのか) や自動インクリメント・アドレッシングが利用可能かなどの機種パラメータに 依存するコードは含んでいる。RTL 生成パスでは、ある特定の種類の構文木に 対してコード生成の戦略を複数持つ必要があることが多い。これらの戦略は パラメータの異なる組合せに対して使用可能である。 著者は可能な場合全てを取り扱うことせず、共通に現れるものや、 著者が出会ったものに絞っている。 取り扱っていない組合せに出会ったら、GCC が abort を呼び出すので 読者も気が付くだろう。幸いにも、新たな戦略を機種独立な形で追加する ことができ、その新たな戦略を必要とするターゲット機種にしか影響を 及ぼさない。


This document was generated using texi2html 1.78.