Portable C Compiler
Portable C Compiler(PCC)は、最も初期のUnix用Cコンパイラの一つです。シンプルな設計と高い移植性を特徴とし、現代でも教育やレガシーシステムのメンテナンスで使用されています。
歴史
編集開発の背景
編集- 1970年代初頭、Stephen C. JohnsonによってAT&T Bell研究所で開発
- Unix Version 7で標準Cコンパイラとして採用
- 2000年代に入り、新たなオープンソースプロジェクトとして再構築
特徴
編集基本構造
編集PCCは以下の主要コンポーネントで構成されています:
- フロントエンド(字句解析・構文解析)
- ミドルエンド(最適化)
- バックエンド(コード生成)
移植性
編集PCCの設計における重要な特徴:
- マシン依存部分の明確な分離
- シンプルなバックエンド設計
- 標準的なツールチェーンとの互換性
コンパイラの使用方法
編集基本的なコマンド
編集コマンド | 説明 |
---|---|
pcc file.c | 基本的なコンパイル |
pcc -o output file.c | 出力ファイル名の指定 |
pcc -E file.c | プリプロセッサのみ実行 |
コンパイルオプション
編集主要なオプション:
- -O: 最適化を有効化
- -g: デバッグ情報を含める
- -Wall: 全ての警告を表示
- -c: オブジェクトファイルの生成のみ
プログラミング例
編集Hello Worldプログラム
編集#include <stdio.h> int main(void) { printf("Hello, World!\n"); return 0; }
コンパイルと実行
編集$ pcc hello.c -o hello $ ./hello Hello, World!
トラブルシューティング
編集一般的なエラー
編集- 未定義参照エラー
- 構文エラー
- リンカーエラー
デバッグ手法
編集- -v オプションによる詳細出力の確認
- プリプロセス済みソースの確認
- デバッグ情報の活用
最適化テクニック
編集コード最適化
編集- ループの最適化
- 定数畳み込み
- 共通部分式の削除
パフォーマンスチューニング
編集- アライメントの考慮
- レジスタ割り当ての改善
- メモリアクセスの最適化
関連項目
編集参考文献
編集- Johnson, S. C. "A Portable Compiler: Theory and Practice"
- Unix Programmer's Manual, Seventh Edition
- PCC公式ドキュメント
外部リンク
編集- PCC公式サイト
- Unix Archive - オリジナルのPCCソースコード