【ITニュース解説】セキュリティ・キャンプで Rust 製 RISC-V ターゲットの C コンパイラを開発した
2025年09月04日に「Zenn」が公開したITニュース「セキュリティ・キャンプで Rust 製 RISC-V ターゲットの C コンパイラを開発した」について初心者にもわかりやすいように丁寧に解説しています。
ITニュース概要
セキュリティ・キャンプで、Rust製のRISC-VターゲットCコンパイラ「gakicc」が開発された。事前学習と合宿でCコンパイラを作成するゼミの一環。Rustで開発されたためセルフホストは不可。講師作成の軽量Cコンパイラ「2kmcc」をgakiccでコンパイルし、生成されたバイナリで再度2kmccをコンパイルする試みが行われた。
ITニュース解説
セキュリティ・キャンプ全国大会2025のCコンパイラゼミで、Rustというプログラミング言語を使ってRISC-VというCPUアーキテクチャ向けのCコンパイラを開発したという記事について解説する。
まず、セキュリティ・キャンプは、情報セキュリティに関する高度な知識や技術を学ぶための合宿形式のイベントである。Cコンパイラゼミは、その中でもCコンパイラという、プログラミング言語Cで書かれたプログラムを機械語に変換するソフトウェアを作成することを目標とする、かなり専門的なゼミだ。通常、Cコンパイラは非常に複雑で大規模なソフトウェアだが、このゼミでは1ヶ月の事前学習と5日間の合宿(うち3日間が開発期間)という短期間で、小さなCコンパイラを作ることに挑戦する。
記事の著者は、このゼミでRustを使ってRISC-Vをターゲットとした「gakicc」という名前のCコンパイラを開発した。ここで重要なのは、RustとRISC-Vという二つのキーワードだ。
Rustは、近年人気が高まっているプログラミング言語の一つで、メモリ安全性が高く、並行処理にも強いという特徴を持つ。従来のCやC++といった言語に比べて、より安全で効率的なプログラムを開発しやすいとされている。特に、大規模なシステム開発や、組み込みシステム開発など、信頼性が重要視される分野で利用されている。
一方、RISC-Vは、比較的新しいCPUアーキテクチャである。従来のCPUアーキテクチャ(例えばx86やARM)は、特定の企業が設計・製造していることが多いが、RISC-Vはオープンソースで仕様が公開されているため、誰でも自由にCPUを設計・製造できる。これにより、カスタムCPUの開発や、特定の用途に最適化されたCPUの開発が容易になるため、注目を集めている。
Cコンパイラは、プログラミング言語Cで書かれたソースコードを、CPUが直接実行できる機械語に変換する役割を担う。CPUの種類によって機械語の形式が異なるため、CコンパイラはターゲットとするCPUアーキテクチャに合わせて開発する必要がある。この場合、gakiccはRISC-VというCPUアーキテクチャ向けの機械語を生成するように作られている。
記事の中で「セルフホスト」という言葉が出てくる。これは、コンパイラが自分自身をコンパイルできる能力のことを指す。つまり、Cコンパイラを使って、そのCコンパイラ自身のソースコードをコンパイルし、実行可能なプログラムを生成できるということだ。セルフホストは、コンパイラ開発において重要なマイルストーンであり、コンパイラの機能が十分に揃っていることの証となる。
しかし、著者が開発したgakiccはRustで書かれているため、Cコンパイラとしてセルフホストすることができない。そこで、講師が作成した「2kmcc」というCコンパイラを利用する。2kmccは、わずか1.5k行程度のコードで実装された、セルフホスト可能なCコンパイラである。
記事では、gakiccを使って2kmccをコンパイルし、生成されたバイナリを使って再度2kmccをコンパイルするというプロセスを繰り返している。これは、コンパイラの正当性を検証するためのテクニックの一つである。もし、gakiccが正しくCのコードを機械語に変換できていない場合、2kmccをコンパイルするたびに結果が変わってしまい、最終的に得られるバイナリが異なるものになるはずだ。しかし、もしgakiccが正しく動作していれば、コンパイルを繰り返しても同じバイナリが得られるはずである。
このように、セキュリティ・キャンプのCコンパイラゼミでは、RustとRISC-Vという最新の技術を活用して、Cコンパイラという複雑なソフトウェアの開発に挑戦している。これは、単にコンパイラの仕組みを学ぶだけでなく、新しい技術を組み合わせることで、既存の技術の限界を突破しようとする試みでもある。