タグ

Compilerに関するyusuketのブックマーク (20)

  • 低レイヤを知りたい人のための Cコンパイラ作成入門

    はじめに このオンラインブックは執筆中です。完成版ではありません。フィードバックフォーム このには一冊のに盛り込むにはやや欲張りな内容を詰め込みました。書では、C言語で書かれたソースコードをアセンブリ言語に変換するプログラム、つまりCコンパイラを作成します。コンパイラそのものもCを使って開発します。当面の目標はセルフホスト、すなわち自作コンパイラでそれ自身のソースコードをコンパイルできるようにすることです。 このでは、コンパイラの説明の難易度が急に上がりすぎないように、様々なトピックを書全体を通じて次第に掘り下げていくという形で説明することにしました。その理由は次のとおりです。 コンパイラは、構文解析、中間パス、コード生成といった複数のステージに概念的に分割することができます。よくある教科書的アプローチでは、それぞれのトピックについて章を立てて解説を行うことになりますが、そのよう

  • http://pasberth.github.io/blog/entry/2013-11-30/index.html

  • LLVM 言語マニュアル(Language Reference Manual)

    この文書は、LLVMアセンブリ言語の参照マニュアルです。 LLVMは、型安全で、低水準な操作ができる、柔軟な、 そして 全ての 高級言語を簡潔に表現できる能力を提供する静的単一代入(Static Single Assignment:SSA)ベースの表現です。 これはLLVMのコンパイル戦略のすべてのフェイズにわたって使用される共通コード表現です。 LLVMコード表現は、3つの異なる形式で使用できるように設計されています。 インメモリコンパイラ(IR)、 ディスク上でのビットコード表現(JITコンパイラの高速ロード対応)、 そして、可読アセンブリ言語表現です。 これは、変形にデバッグや視覚化の自然さを残しながら、 LLVMが効率的なコンパイラ変形および分析に強力な中間表現を提供することを可能にします。 LLVMの3つの異なる形式はすべて等価です。 このドキュメントは人間の判読可能な表現および

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • Rubyソースコード完全解説 / 青木峰郎

    $Id: index.html,v 1.6 2004/07/20 23:08:12 aamine Exp $ この文書は書籍『Rubyソースコード完全解説』のHTML版です。 ただし初校段階の原稿をベースにしているため、 書籍では修正されている間違いが残っている場合があります。 予め御了承ください。 2004-02-16 に全章を公開しました。 目次 まえがき 序章 第 1 部「オブジェクト」 第 1 章「Ruby言語ミニマム」 第 2 章「オブジェクト」 第 3 章「名前と名前表」 第 4 章「クラス」 第 5 章「ガーベージコレクション」 第 6 章「変数と定数」 第 7 章「セキュリティ」 第 2 部「構文解析」 第 8 章「Ruby言語の詳細」 第 9 章「速習yacc」 第 10 章「パーサ」 第 11 章「状態付きスキャナ」 第 12 章「構文木の構築」 第 3 部「評価」 第

  • http://www.cc.u-tokyo.ac.jp/publication/news/VOL10/No5/200809tuning.pdf

  • B3 OS/Programming

    シラバス コースは、プログラミングの基について、ひととおりの技術を学び終えた受講者を対象とする。コースの目的は、実際のソフトウェアを開発する際に、具体的にどのようにプログラムを設計し、またどのように OS の機能を利用していけばよいか、感覚をつかんでもらうことである。このため、コースは講義中心ではなく、いくつかのソフトウェアの作成演習をとおして、そのソフトウェアのプログラムはなぜそのように設計されているのか等を考えてもらう。 1. 簡単な C コンパイラ 言語仕様を簡略化したCコンパイラを作成し、言語処理系の基構成を学ぶ。また関数呼び出しや配列参照など、C言語の各基機能が実際にどのような機械語に変換されていくのかを学ぶ。 実際に作成する処理系は2つで、まずはじめに字句解析の練習として、ごく簡単なLispインタプリタを作る。 その後、構文解析、コード生成の演習のため、C言語風の手続

  • 第9章 速習yacc

    概要 パーサとスキャナ プログラム言語のパーサの書きかたは昔からしつこく研究されてきており、 かなりしっかりした定石がある。よほど変な(または曖昧な)文法でない 限り、定石にのっていけば解決できるものだ。 まず最底辺には文字列を単語(トークンとも言う)の列に切り出す部 分がある。これをスキャナ(scanner)とかレクサ(lexer)と言 う。日語で言うと字句解析器だが、言いにくいのでスキャナと呼ぼう。 スキャナというものが出てくる根底にはそもそも「単語の区切りには空白ある でしょ」という常識がある。そして実際にたいていのプログラミング 言語はそういう仕様になっている。そのほうが楽だからだ。 例えば古いFortranでは空白が意味を持たなかった。つまり空白を入れても 単語区切りとは限らないし、変数の途中で何の前触れもなく空白を挿入したり することもできた。ところが解析が恐ろしく面倒なもの

  • http://edu.net.c.dendai.ac.jp/ad/1/2004/11/index.xml

  • Cコンパイラ設計(yacc・lexの応用)

    この章では、いくつかの事柄を統合している。すなわち、yacc入力される文法、構文解析プログラムlexの仕様、さらに簡単な記号テーブルの機能を結び付け、言語認識プログラムを作成する。ここでの例で示されるように、このような言語認識は、整ったプリンタ出力を行なうプログラムなどに利用することができる。 まず最初に、yaccが文法を入力とし、ファイルy.tab.cに出力し、またファイルy.outputにその解説を出力するパーサの働きを理解しなければならない。この背景を明確にするために、3.2節では、samp1eCの言語認識においてそれらが実際にどのように結び付けられるかを示す。 ここでは、認識プログラムを起動するためのmain()プログラムと、入力に誤りがあった場合にパーサから呼ばれるyyerror()が示される。3.3節では、コンパイラの前にCプリプロセッサを呼ぶことができるような高機能のmain

  • その4 「電卓を作ってみよう」 - C YOTA BANASHI

    電卓が欲しい! PCで文書作成とかしていて、ちょっと電卓が使いたくなることは、 ちょくちょくあります。 Windowsなら、スタートメニューからGUIベースの電卓が起動できますが、 立派なキーボードが付いてるPCで、 マウスで一所懸命ボタンをクリックするのなんて、 冷静に考えるとなんかバカです。 もちろんあの電卓でもキーボードから入力することは出来ますが、 演算子の優先順位は見てくれませんし、括弧を使った計算もできません。 それに、一般に、電卓で何十個もの数値を足す場合などは、 「ああ、入力ミスしてないかなあ」と途中で不安になるものです。 また、途中で入力ミスに気付いた場合、 最後の入力だけクリアして入れ直すことは一応出来るようなんですが、 どこまでどうクリアされてるのかよくわからなくて、 結局最初から入れ直したりしてません? 私は(プログラマの癖に)機械オンチなので、よく最初から入れ直し

  • GCC 解読室 Wiki*

    Wikiaへ引越し Wikiaへ引っ越す事になりました。 新しくページを作る時はWikiaの方にお願いします。 ▲ ▼ FrontPage GCC のソースコードをひらメソッドで読んでいこうかと思っています. GCC は,最も歴史が古く,よってたかって世界中の スーパハカー に知恵と技術の限りを尽くして叩かれ続け,今では全てのフリーソフトウェアの礎石となっている,地球が宇宙に誇れるプログラム ((c) shinichiro_h さん & wo さん) です.ぜひあなたも一緒に,この難攻不落の要塞に挑んでみませんか ? 私 (管理人 あろは) は,とりあえず今の所,フロントエンドが何をやっているのか (GCC の内部データ表現形式である木構造,GENERICTree と GIMPLE Tree がどのようにして生成されるのか) を理解したいです. (RTL を含む,ターゲットア

  • プログラム言語論 2006

    プログラム言語論 2006 信頼性情報システム工学科(RISE)向の「プログラム言語論」(火 1コマ・ 担当: 香川)の情報を掲載します。 受講上の注意 科目は必ず「システムソフトウェア演習Ⅰ」 と同時に受講して下さい。 お知らせ (新しいものほど上です) 2006年度期末試験解答例 (2007/02/06) レポートの問題の一部を前もって発表します。(12/19) (1/16更新) すべての問題を発表しました。 システムソフトウェア演習Ⅰを受講していない人へ: レポートの問題には含まれませんが、システムソフトウェア演習Ⅰの問題のうち、 少なくとも次のような問題を自習しておくことを推奨します。 11/07の課題 または 11/14の課題 (Flex) 11/21の課題 または 11/28の課題 (演算子順位法) 12/05の課題 または 12/12の課題 (Bison) 授業中に実習の時

  • Flex - Table of Contents

    字句スキャナ生成プログラム Flex 2.3.7、1.03版 1993年2月 G. T. Nicol 著 序 プログラムの実例について Flex入門 問題解決手段としてのFlex 一般的なプログラミング・ツールとしてのFlex Flexの起動 コマンドライン・オプション コマンドライン・オプション(Flex 2.5の補足情報) Flex記述言語 コメント オプションのCコード 定義 %% ルール パターン・セクション 文字 Flexにおける文字列 Flexにおける文字のグループ化 Flexにおける文字のグループ化(Flex 2.5の補足情報) 正規表現 スタート状態 スタート状態の説明 状態の活性化 スタート状態に関する注 スタート状態に関する注(Flex 2.5の補足情報) スタート状態の使用例 %option(Flex 2.5の補足情報) Flexとのインターフェイス FlexとC F

  • Bison 1.28 - Table of Contents

    Bison入門 YACC互換構文解析器生成ツール 14 January 1999, Bison Version 1.28 by Charles Donnelly and Richard Stallman まえがき 日語訳にあたって Bisonの利用条件 GNU GENERAL PUBLIC LICENSE Preamble TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION How to Apply These Terms to Your New Programs Bisonの概念 言語と文脈自由文法 形式規則からBisonの入力へ 意味値 意味アクション Bisonの出力――構文解析器ファイル Bisonを使う手順 Bison文法の全体像 例 逆ポーランド記法電卓 rpcalcのための宣言 rpcalcのための

  • Lex and YACC primer/HOWTO

    PowerDNS BV (bert hubert <bert@powerdns.com>) v0.8 $Date: 2002/07/22 14:02:09 $ 大西 大樹 (daiki onishi <onishi@mbc.nifty.com>) v0.8j 2003/02/08 ドキュメントは Lex と YACC の基的な使い方について記述します 1. イントロダクション 1.1 ドキュメントに含まれないもの 1.2 ダウンロード 1.3 ライセンスについて 2. Lex と YACC でできること 2.1 それぞれのプログラムのやっていること 3. Lex 3.1 正規表現でのマッチ 3.2 C のようなシンタックスをもつもう少し高度な例 3.3 おさらい 4. YACC 4.1 単純な温度調節器 4.2 引数を扱えるように拡張した、温度調節器 4.3 設定ファイルの構文解析

  • YARV(Yet Another RubyVM)アーキテクチャ

    これは? Compiler (compile.h, compile.c) VM Generator (rb/insns2vm.rb, insns.def)命令記述 VM (Virtual Machine, vm.h, vm.c)レジスタ スタックフレームメソッドローカルフレーム ブロックローカルフレーム クラスフレーム フレームデザインについての補足 メソッド呼び出しについて 例外例外テーブル rescue ensure break, return(ブロック中)、retry 定数の検索定数検索パス 最適化手法threaded code Peephole optimization inline method cache inline constant cache ブロックと Proc オブジェクトの分離 特化命令 命令融合 オペランド融合 stack caching JIT Compile

    yusuket
    yusuket 2006/11/13
    Rubyの次期VM仕様
  • 西南贺字互联网商城有限公司

  • プログラミング言語処理

    プログラミング言語処理 講義資料 一覧 全講義資料 pdf版(version 1.1, 108ページ)は、 こちら 言語処理系とは インタプリタとコンパイラ 言語処理系の基構成 例題:式の評価 BNFと構文木 解釈実行:インタプリター コンパイラとは ソースコード 字句解析の基礎:正規表現によるパターンマッチ 字句解析と正規表現 自動字句解析生成プログラム:lex 数式の構文解析:top-down parserの作り方 構文規則 top-down parser の作り方 構文解析の基礎 top-down parserとbottom-up parser 上向き構文解析と還元 演算子順位構文解析法 LR構文解析法 構文解析生成プログラムyacc tiny Cについて tiny Cの言語仕様 tiny C

  • Google Sites: Sign-in

    Not your computer? Use a private browsing window to sign in. Learn more about using Guest mode

  • 1