独自Cコンパイラを作ってみよう!
あなたは
人目のお客様です.
※ ここで説明していることはすべて無保証です.
サンプルのソースコードやその他プログラム,各種情報などは,
個人の責任の上で利用してください.
NLCC(No Look, No Listen, No Learn C Compiler)
は独自のCコンパイラです.
何も見ず,何も参考にせずに,フルスクラッチで開発しています.
ご意見,要望などあれば,ぜひ連絡ください!
- NLUX alpha (2022/05/14版)
- nllibcの修正
- 以下の関数を追加
- vprintf()/vfprintf()/vsprintf()
- fgetc()/fputc()
- bcmp()/bcopy()/bzero()
- isascii()
- NLUX alpha (2022/03/07版)
- nllibcの修正
- stdio.h系の出力関数の出力バッファのバグを修正
- 初期化関数のミスでバッファが毎回初期化されてしまいバッファがクリアされることで,出力もれが発生していた
- 出力バッファを利用せずに直接送信することで,出力順番が入れ替わることがあった
- exit()による終了時にバッファのフラッシュが行われていなかった
- 出力バッファをファイル構造体から分離
- atexit()を実装
- NLUX alpha (2022/03/06版)
- 全体の修正
- テストセットをnlccから分離し独立,ディレクトリ整理
- テストセットで/tmp上での実行をサポート(メモリファイルシステムの利用を想定)
- ターゲットアーキテクチャの指定を追加(ARCH)
- nlcc→nlcc1に変更
- NLCCの修正
- デフォルトアーキテクチャをアーキテクチャ定義に応じて切替える
- nllibcの修正
- feof()/ferror()/fread()/fwrite()を追加
- 他,細かい修正
- NLUX alpha (2021/12/21版)
- NLCCの修正
- 演算のビルトインでの再帰による無限ループを防ぐ修正
- NLUX alpha (2021/11/13版)
- 全体の修正
- 全体で組み合わせてビルドできるように,Makefileを大幅に修正・整備
(nllibc/nlline/nlshやシステム標準のヘッダファイル・ライブラリなどを組み合わせてビルド可能)
- 様々なパターンでのビルド用Makefileを追加
- Debian/CentOSでのビルドに対応
- NLCCの修正
- x86_64対応(FreeBSD/Debianで動作確認済み,セルフビルドが可能)
- AArch64を追加(ただし未テスト)
- nllibc/nlsh/nllineのビルドに対応
- もろもろいっぱい修正
- nllibcの修正
- x86_64のcrtでスタックポインタのアラインメントを追加
- システム付属の標準ヘッダファイルでビルドできるように対応
- Debian/CentOS環境でのビルド整備
- malloc()で速度が極端に遅くなる問題の対応(キャッシュ化)
- malloc()でmmap()に対応
- fopen()/fclose()によるファイルポインタ対応
- stdioの出力をバッファリング
- もろもろいっぱい修正
- NLUX alpha (2021/10/01版)
- FreeBSD/CentOS/Debian上でセルフコンパイルが可能になった
(各種標準ヘッダファイルをインクルードしてコンパイルが可能)
- 多アーキテクチャ対応のフレームワークを追加
- 多アーキテクチャ対応(ARM/MIPS/PowerPC/Thumb/MIPS16/OSECPU)
(ただし未テスト.OSECPUは実験レベルの対応)
- 多アーキテクチャ対応を想定した処理の共通化
- ビルトインを多数追加し,アーキテクチャ対応時の必要作業を可能な限り削減
- 命令未実装の場合に,ビルトインや別命令で可能な限り代替するように修正
- もろもろいっぱい修正
- NLUX alpha (2021/09/11版)
- FreeBSD上でセルフコンパイル(nlcc1自身でnlcc1を生成)が可能になったレベル
- FreeBSD(amd64)上でgcc→nlcc1→nlcc1(※1)→nlcc1(※2)のように生成し,
※1と※2が一致し,またテストプログラムがすべて動作することを確認
- もろもろいっぱい修正
- NLUX alpha (2021/09/05版)
- コンパイラドライバ開発に向けて,nlccをnlcc1に改名
- テストセットを追加し,テストを自動化
- x86アセンブリを出力し,多くのテストプログラムが正常動作したレベル
- もろもろいっぱい修正
- NLUX alpha (2021/08/09版)
- nlsh/nllibcと統合しnluxとする
- x86アセンブリをなんとなく出力してくれるレベル
(ループによる合計計算くらいは動いたレベル.でもまだ全然不十分)
- もろもろいっぱい修正
- NLCC alpha (2021/06/02版)
- 構文解析(と言うのだと思う,多分)ができるところまででひとまず公開
メールは kozos(アットマーク)kozos.jp まで