SPONSORED

中間言語(ちゅうかんげんご)

最終更新:2026/4/19

中間言語は、コンパイラやインタプリタの処理過程において、ソースコードと機械語との間に生成される、ハードウェアに依存しない抽象的なプログラム表現である。

別名・同義語 中間表現IR

ポイント

異なるプログラミング言語間の翻訳や、最適化処理を容易にする役割を担う。特定のハードウェアに依存しない。

中間言語とは

中間言語(Intermediate Representation, IR)は、プログラミング言語のコンパイラやインタプリタにおいて、ソースコード(高水準言語)とターゲットコード(機械語)の間に生成される、抽象的な表現形式です。ソースコードを直接機械語に変換するのではなく、まず中間言語に変換し、その後中間言語から機械語に変換することで、コンパイラの構造を簡素化し、移植性を高めることができます。

中間言語の役割

中間言語の主な役割は以下の通りです。

  • コンパイラの構造化: ソースコードの解析、意味解析、コード生成といったコンパイラの各段階を分離し、モジュール化を促進します。
  • 移植性の向上: 中間言語を共通の形式で保持することで、異なるプラットフォームへの対応が容易になります。異なるターゲットアーキテクチャに対して、中間言語から機械語への変換部分のみを変更すれば済みます。
  • 最適化の容易化: 中間言語上で様々な最適化処理(定数畳み込み、共通部分式の除去、デッドコードの削除など)を適用することで、生成される機械語の性能を向上させることができます。
  • 多言語対応: 複数の高水準言語を共通の中間言語に変換することで、異なる言語間の相互運用性を高めることができます。

代表的な中間言語

代表的な中間言語としては、以下のようなものがあります。

  • LLVM IR: LLVMプロジェクトで使用される中間言語。幅広いアーキテクチャに対応し、高度な最適化機能を提供します。
  • Java bytecode: Java Virtual Machine (JVM) で実行される中間言語。プラットフォームに依存しない実行環境を実現します。
  • CIL (Common Intermediate Language): .NET Frameworkで使用される中間言語。共通言語ランタイム (CLR) で実行されます。
  • Three-address code: コンパイラ理論でよく用いられる、基本的な中間表現形式の一つ。

中間言語の設計

中間言語の設計は、コンパイラの性能や移植性に大きく影響します。中間言語は、高水準言語の表現力を十分に保持しつつ、機械語への変換を容易にする必要があります。また、最適化処理を効率的に行うための情報も保持することが重要です。

近年の動向

近年では、機械学習を用いたコンパイラ最適化や、GPUなどの特殊なハードウェア向けのコード生成において、中間言語の役割がますます重要になっています。

SPONSORED