タグ

Cと言語に関するhtzのブックマーク (2)

  • セキュリティ・キャンプ 2018 (Cコンパイラ自作ゼミ) に参加してきました - 0x19f (Shinya Kato) の日報

    8/14〜8/18の期間でセキュリティ・キャンプ2018のCコンパイラ自作ゼミに参加させていただきました。 なんと4泊5日で1日3が用意されるというQoLの高い環境で、集中して開発ができ最高でした。 Cコンパイラ自作ゼミは「セルフホスト可能なCコンパイラ」の開発を目標にコンパイラを自作するという内容でした。 講師の @rui134 さんと @hikalium (実は大学の同期です!) 、チューターの @retrage01 さんがどんな質問にも建設的に答えをくださって、非常に多くの学びが得られました。 最終的には自作Cコンパイラのセルフホストも達成でき、自分の技術スキルを何段階も成長させられたと感じています。 以下のリポジトリが今回のセキュリティ・キャンプの成果物です。 github.com 前置きが長くなりましたが、この記事では以下のことについて書きたいと思います。 Cコンパイラ自作ゼミ

    セキュリティ・キャンプ 2018 (Cコンパイラ自作ゼミ) に参加してきました - 0x19f (Shinya Kato) の日報
  • セルフホスティングCコンパイラを書いた - 茅の下

    セルフホスト(自分自身をビルド)できるCコンパイラnoccを書きました。 github.com はじめに 去年の夏あたりからCコンパイラを書くのが流行っていたのでやってみました。 例によって@rui314さんの8cc、9ccと低レイヤを知りたい人のためのCコンパイラ作成入門を参考にしていますが、バックエンドにはLLVMを使用しています。 工夫した点 以下、作る上で工夫した点です。 言語仕様に制限をつける C言語の全仕様を網羅しようとすると到底完成は不可能なのでサポートする言語仕様に制限をつけまくりました。 制限には例えば以下のようなものがあります。 変数宣言が初期値を取れない。 複数の変数をコンマ区切りで宣言できない。 typedef宣言や型のconst修飾などはその語順を固定している。 型解析時は型のconst修飾を無視する。 関数のプロトタイプ宣言はトップレベルでのみ行える。 関数ポイ

    セルフホスティングCコンパイラを書いた - 茅の下
  • 1