コンテンツにスキップ

Portable C Compiler

出典: フリー教科書『ウィキブックス(Wikibooks)』

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公式ドキュメント

外部リンク

[編集]