タグ

compilerとprogrammingに関するakishin999のブックマーク (6)

  • コンパイラを書いてセルフホストした

    Quartzという言語をデザインしてコンパイラを書いて自身をコンパイルできるところまで到達したので記録として書く (人に使ってもらうことなどは特に想定してないので、ドキュメントなどはありません) Quartzについて 言語機能的にはGoとかに近く、syntax的にはRustに近い言語としてデザインした。ターゲットとしてWASM(wat形式)のみサポート。 元々の想定として、ゲームのスクリプトやアプリケーションのプラグインなど、動的に読み込めて気軽にかけて、型やLSPなどの現代的なDXは提供したいというモチベで作り始めた。 例えばfizzbuzzのコードは以下のような感じ。 fun main() { for i in 1..100 { if i % 15 == 0 { println("FizzBuzz"); } else if i % 3 == 0 { println("Fizz"); }

    コンパイラを書いてセルフホストした
  • コンパイル技法: パターンマッチ

    書では関数型言語をはじめとして多くの言語にあるパターンマッチをコンパイルする方法を紹介します。パターンマッチはシンプルに条件分岐の連鎖にコンパイルすることもできますが、よく研究された手法を使えば驚くほど効率的なコードを生成できるようになります。そのような手法を2種類紹介します。 パターンマッチはデータ型に照合しそのデータを取り出すものです。例えばRustであれば match opt { Some(x) => f(x), None => g()} のように Option 型への照合などに使えます。書の前半ではパターンマッチの挙動や使い方などを学びます。挙動の確認にはプログラミング言語Standard MLを使い、一部Cのコードも使います。その後Common LispやJavaなどの他の言語でのパターンマッチの状況を確認します。後半ではパターンマッチのコンパイル技法について紹介します。パタ

    コンパイル技法: パターンマッチ
  • アバストが自社のマシンコード逆コンパイラをオープンソース化

    Skip to main content >閉じる

    アバストが自社のマシンコード逆コンパイラをオープンソース化
  • 一日でできるセルフホスティングForthコンパイラ - Qiita

    はじめに これは「言語実装 Advent Calendar 2017」24日目の記事です。 この記事では 64bitWindows で実行可能な x86_64 のセルフホスティング Forth コンパイラを作ります。 対象読者としては「C言語そこそこわかる」「x64アセンブラに嫌悪感はない」ぐらいの人を想定しています。コンパイラの知識は特に前提としません。 完成品はこちらから取得できます。 bootstrap には C を使います。しかしC言語的にお行儀の悪いことを色々やりますので、バージョンやコンパイルオプション等によっては動かないかもしれません。ご了承ください。一応完成版は以下の環境で動作を確認しています。 Cygwin64 の gcc option: -O3 と -O なし両方 version: 6.4.0 (GCC) target: x86_64-pc-cygwin Msys2

    一日でできるセルフホスティングForthコンパイラ - Qiita
  • Wandbox

  • コンパイラを作ってみて - 七誌の開発日記

    コンパイラ開発(id:n7shi:20090310)を通して物の見方がどう変わったかについて書いてみます。一般的な見解(と私が認識しているもの)、私の見解(過去・現在)などの視点が入り乱れるため、箇条書きを中心に記述します。何かを主張しようとしているわけではないので、特に結論のようなものはないことを、あらかじめ断っておきます。 【追記】私が作成したコンパイラはSilverlight上で動作確認できます。 ⇒ id:n7shi:20090727 アセンブラ アセンブラをいじることに対する一般的な見解(と私が認識しているもの) コンピュータの動作についてよりよく理解するため。 カリカリにチューニングするため。 これらに対して以下のような意見があります。 CPU内部で更にマイクロコードに分解されるのだから、アセンブリだけ見ていてもパイプラインの動作などは分からないし、不十分 これはその通りなので

    コンパイラを作ってみて - 七誌の開発日記
  • 1