タグ

コンパイラに関するmoozのブックマーク (20)

  • 静的単一代入 - Wikipedia

    静的単一代入(せいてきたんいつだいにゅう、英: Static Single Assignment form, SSA)形式は、コンパイラ設計における 中間表現 (IR) のひとつで、各変数が一度のみ代入されるよう定義されたものである。もともとの中間表現における変数は「バージョン」に分割され、全ての変数の定義がバージョンを表現できるよう、通例新たな変数は元の名前に添え字を付けて表現される。SSA ではuse-def 連鎖が明示的であり、連鎖は要素を一つだけ持つ。 SSA はRon Cytron、Jeanne Ferrante、Barry Rosen、Mark Wegman、Ken Zadeck および IBM の研究者たちにより1980年代に開発された。 Scheme、ML、Haskell などの関数型言語のコンパイラでは、Fortran や C などのコンパイラで SSA の利用が期待され

    静的単一代入 - Wikipedia
  • GitHub - rui314/8cc: A Small C Compiler

    8cc C Compiler Note: 8cc is no longer an active project. The successor is chibicc. 8cc is a compiler for the C programming language. It's intended to support all C11 language features while keeping the code as small and simple as possible. The compiler is able to compile itself. You can see its code both as an implementation of the C language and as an example of what this compiler is able to comp

    GitHub - rui314/8cc: A Small C Compiler
    mooz
    mooz 2012/05/12
    C99 コンパイラ.セルフホスティング可能.マシンコードの生成まで.
  • 『Rubyソースコード完全解説』不完全解説 YarvManiacs

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直

  • るびま

    『るびま』は、Ruby に関する技術記事はもちろんのこと、Rubyist へのインタビューやエッセイ、その他をお届けするウェブ雑誌です。 Rubyist Magazine について 『Rubyist Magazine』、略して『るびま』は、日 Ruby の会の有志による Rubyist の Rubyist による、Rubyist とそうでない人のためのウェブ雑誌です。 最新号 Rubyist Magazine 0058 号 バックナンバー Rubyist Magazine 0058 号 RubyKaigi 2018 直前特集号 Rubyist Magazine 0057 号 RubyKaigi 2017 直前特集号 Rubyist Magazine 0056 号 Rubyist Magazine 0055 号 Rubyist Magazine 0054 号 東京 Ruby 会議 11 直

  • Threaded code - Wikipedia

    In computer science, threaded code is a programming technique where the code has a form that essentially consists entirely of calls to subroutines. It is often used in compilers, which may generate code in that form or be implemented in that form themselves. The code may be processed by an interpreter or it may simply be a sequence of machine code call instructions. Threaded code has better densit

  • Introducing SquirrelFish Extreme.ja – WebKit – Trac

    This page contains a Japanese translation of the post on Surfin' Safari blog "Introducing SquirrelFish Extreme". この文書について "Introducing SquirrelFish Extreme" の日語訳です ​http://webkit.org/blog/214/introducing-squirrelfish-extreme/ 推敲歓迎: 誤訳, タイポ, 訳語の不統一, そのほか... SquirrelFish Extreme を紹介します ちょうど三ヶ月前、私達は SquirrelFish を発表しました。 これは私達の JavaScript エンジンを大改造するもので、 高性能なバイトコードインタプリタを導入しました。 今日は次世代の JavaScript エン

    mooz
    mooz 2011/08/20
    SquirrelFish の最適化
  • Mozilla と WebKit,縮小された JS や CoffeScript など JS 言語のデバッグサポートを目指す

    Rustが再評価される:エコシステムの現状と落とし穴 In this article, we share findings and insights about the Rust community and ecosystem and elaborate on the peculiarities and pitfalls of starting new projects with Rust or migrating to Rust from othe...

    Mozilla と WebKit,縮小された JS や CoffeScript など JS 言語のデバッグサポートを目指す
    mooz
    mooz 2011/08/14
    コンパイル前と後の対応関係を持った SMAP ファイル.JVM などでも.
  • HipHop talk

    mooz
    mooz 2011/04/26
    Facebook の PHP -> C++ トランスレータな HipHop を取り上げ,動的言語による JIT と静的言語による AOT の pros. cons. を.
  • TCC とか x86-64 とかの話 - 兼雑記

    を会社でしたのでそのスライドを置いておきます。 http://shinh.skr.jp/slide/tcc64/000.html いつかこういうのまとめたいなあと思っていたのですが、特に後半とか色々グダグダになったり、記憶が消し飛んでて何に苦労したか忘れていたりと、まぁ色々適当になってしまって残念です。 脳なんて揮発メモリなんだから、なんかやったら記録残すってのは大事だなあという。

    TCC とか x86-64 とかの話 - 兼雑記
  • コンパイラの本: なつたん

    誰も作ってくれなかったので、自分でまとめてみた。 目次からざくっと拾っただけなので、間違いあるかも。を買うときは自分で中身確認してくださいね。 ドラゴンブック、タイガーブック、中田先生の、optimizing compilers modern architecturesの4冊は、コンパイラで使われる技術について、最適化まで含めてひととおり書いてある。 あとは作ってみよう系で適当にまとめた。当は「○○という最適化が載ってる載ってない」までまとめたいけど、まだそこまで理解が進んでない。

    コンパイラの本: なつたん
  • BrainfuckをJITしてみた - fjnlの生存記録のような何か

    BFだとJITしやすいので作ってみた。簡単な最適化をしています。 add/sub [rdi], immの直後にcmp [rdi], 0が来るのは無駄でしかないので、そこの最適化ぐらいはしてみたいですね。 http://gist.github.com/518146 ソースコードは400行ほどあるのでgist上に置いています。Core i5@2.66GHzの環境でhttp://esoteric.sange.fi/brainfuck/bf-source/にあるmandelbrot.bを1.4秒程度で実行する能力があります。 x86_64限定です。Mac OS XとLinux上で動く事を確認しました。DEPがONな環境だと、どうなるんでしょうね。

    BrainfuckをJITしてみた - fjnlの生存記録のような何か
    mooz
    mooz 2010/08/12
    Brainfuck の JIT
  • ブートストラッピングでコンパイラを作る日記

    3年ぶりに更新します。この3年間にも(途中1年以上別の事をやっていましたが)自作の言語とその処理系の開発は続けていました。そろそろ紹介記事を書き始めようと思います。ホームページは既にありますが、こちらは昨年の夏から更新していないので内容が古くなっています。記事を元にして後で更新します。 言語の名前はAmberと言います。Amberとは日語で琥珀という意味です。実は同名の言語処理系がいくつか存在するのですが(larsivi / amber / wiki / Home — Bitbucket, GitHub - eknkc/amber: Amber is an elegant templating engine for Go Programming Language, inspired from HAML and Jade, The Amber Programming Languageなど

    ブートストラッピングでコンパイラを作る日記
    mooz
    mooz 2010/07/31
    純粋関数型言語の処理系を作成する日記
  • ブートストラップ問題 - Wikipedia

    この記事は検証可能な参考文献や出典が全く示されていないか、不十分です。出典を追加して記事の信頼性向上にご協力ください。(このテンプレートの使い方) 出典検索?: "ブートストラップ問題" – ニュース · 書籍 · スカラー · CiNii · J-STAGE · NDL · dlib.jp · ジャパンサーチ · TWL(2016年11月) ブートストラップ問題 (Bootstrap problem) は、コンパイラをコンパイル対象のプログラミング言語で作成した際に、そのコンパイラの最初のコンパイルをどうするかといった場合を典型的な例とする、いわゆる「鶏と卵」の形をしたセルフホスティング環境の問題を指す。これを解決するための方式をブートストラップ方式といい、この問題を何とかして最初の完備した環境を作ることをブートストラッピングという[1]。 名前についてはブートストラップの記事を参照。

    mooz
    mooz 2010/07/31
    "コンパイラをコンパイル対象のプログラミング言語で作成した際に、そのコンパイラのコンパイルをどうするかという問題"
  • JRubyのパフォーマンスの更なる向上を目指して

    原文: チャールズ=オリバー=ナター JVM上でJRubyが動く事の利点は折りに触れて述べてきました。JRubyのパフォーマンス数値はそこそこの結果を出しているのですが、多くの人々の期待に反して「抜群に素晴らしい」というものではありませんでした。詰まる所、他のRuby言語の実装に較べて良い結果を出したとしても、静的な型システムを用いる他のJVM言語には敵わないのでした。 しかし、それは今までの話し。 最近、JRubyの実行時に得られる情報に基づいた最適化をあれこれと試し始めました。ご存知の通り、JRubyは、Ruby言語の構造木をJVMのバイトコードにコンパイルするJITを搭載しています。その一方で、JITを使った他のシステムとは異なり、JRubyは最終的に良い結果をもたらすような情報をプログラムの作動時点で集めることはしなかったのです。今までにやっていた最適化と言えば、AOTコンパイラで

    mooz
    mooz 2010/06/27
    動的呼び出しを静的呼び出しに. Fixnum を unboxing.
  • Comp.compilers: Re: JIT machine code generation

    mooz
    mooz 2010/06/27
    JIT について. 参考になる論文や, 一般的な実装方法など. ヒープ領域にマシンコードを配置して, 先頭アドレスにジャンプ. もしくは関数呼び出し形式で.
  • 事前コンパイラ - Wikipedia

    事前コンパイラ(Ahead-Of-Timeコンパイラ、AOTコンパイラ)とは、アプリケーション実行前に(事前に)ソースコードや中間表現(中間言語)を機械語へ変換(コンパイル)するコンパイラのこと。対義語は実行時コンパイラ(Just-In-Timeコンパイラ、JITコンパイラ)。 概要[編集] JITコンパイラはアプリケーションの実行直前または実行中に、中間言語コードを実行環境のプロセッサに応じた機械語コードにコンパイルするため、インタプリタによる逐次実行方式よりは高速であるものの、必要なコードがすべて機械語に変換されてメモリ上に展開され、定常状態に到達する(ウォームアップが完了する)まではアプリケーションの性能を低下させることがある。特に起動にかかる時間が増加するため、起動と終了を繰り返すアプリケーションで問題になることがある。AOTコンパイラは実行時コンパイルの必要性を無くし、ソースコー

    mooz
    mooz 2010/06/19
    ahead-of-time. "AOTコンパイラは実行時のコンパイルの必要を無くし、ソースコードから中間言語コードを生成する際にネイティブの機械語コードも生成してしまう方式である"
  • ホワット・ア・ワンダフル・ワールド コンパイラインフラストラクチャ LLVM

    COINS はいろいろと微妙な気がするので,別のコンパイラインフラストラクチャ LLVM (Low-Level Virtual Machine) を見てみた. The LLVM Compiler Infrastructure Project LLVM ってのは,仮想マシンなんだけど,例えば Java の JVM,Perl の parrot,Ruby の TVM (旧旧 Rite,旧 YARV) みたいに,特定のプログラミング言語に向けたものではない (ってまぁ,みんな言うんだけど) なので,C-- のように,GC みたいな高級で,なおかつ言語に強く依存するような機能は提供しない (オプションとしては提供されているらしい) 単純な RISC-like な命令セットを持つ VM で,STL を駆使した C++ で書かれているらしい. GCC のバックエンドを持っているので,C/C++ からバイ

    mooz
    mooz 2010/05/03
    LLVM の説明. Compiler infrastructure.
  • Welcome to C--

    Pada dunia teknologi yang terus berkembang, kabar terbaru mengenai peluncuran Windows 12 telah menjadi sorotan banyak pengguna komputer. Seiring dengan berbagai rumor dan spekulasi, banyak yang penasaran apakah Windows 12 benar-benar akan hadir pada tahun 2024. Mari kita telusuri bocoran fitur dan spesifikasi minimum yang mungkin akan dihadirkan oleh sistem operasi terbaru dari Microsoft ini…. Win

    mooz
    mooz 2010/05/03
    Compiler infrastructure. LLVM と比較して.
  • コンパイラを作ってみて - 七誌の開発日記

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

    コンパイラを作ってみて - 七誌の開発日記
  • http://kameken.clique.jp/compiler/

  • 1