タグ

compilerに関するuokadaのブックマーク (17)

  • Ichigo Lispコンパイラ完全解説

    Ichigo Lispコンパイラ完全解説 はじめに この記事では私がWebAssemblyで書いた Ichigo Lispという LISP 1.5実装のコンパイラのソースコードをすべて解説する。 というのも、最近とあるコンパイラのを読んで 「説明が特定の実装に基づいてる割にそのソースが一部しか載ってない」 という不満を感じたのだが、自分で書いたコンパイラの記事 を読み返してみると、コンパイラのソースコードが一切出てこないことに気づいた。 こんな記事を書きながらよく人様のに不満を持てたものだと 瀬戸内海より深く反省したので、 ここにIchigo Lispのコンパイラのすべてのソースコードを解説する。 想定読者とか Ichigo Lispのコンパイラは(ほとんど)すべてLISP 1.5で書かれている。 LISP 1.5特有のややこしい機能などは使っていないので、 Common Lisp、S

  • Cコンパイラを作ろう!

    こんにちは、21Bのseasonです。この記事はtraP夏のブログリレー3日目の記事です。 自作Cコンパイラでセルフホスト達成しました。 リポジトリ: https://github.com/season1618/c-compiler/tree/main 自作Cコンパイラでセルフホスト達成しました!!!!!!🎉🎉🎉https://t.co/8fLIAJWksQ pic.twitter.com/2fgH5sKoZ0 — season (@season1618) July 27, 2022 実際にどうやって作るかを書くと長くなるので、ここでは経緯とか完成までの流れとかを書こうと思います。一応開発メモは以下に上げておきました。 開発メモ: https://github.com/season1618/note/blob/main/cs/c-compiler/index.md 経緯 大学の講義で

    Cコンパイラを作ろう!
  • コンパイル技法: パターンマッチ

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

    コンパイル技法: パターンマッチ
  • GitHub - chrisseaton/rhizome: A JIT for Ruby, implemented in pure Ruby

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - chrisseaton/rhizome: A JIT for Ruby, implemented in pure Ruby
  • 「Javaでコンパイラの基礎を理解する」関連の最新 ニュース・レビュー・解説 記事 まとめ - ITmedia Keywords

    Javaでコンパイラの基礎を理解する(6): もしも、コンパイラ専門書が読めたなら…… (2007/7/11) Javaでコンパイラの基礎を理解する(5): コンパイラの入り口、「字句解析」のための文字列操作 (2007/5/15) Javaでコンパイラの基礎を理解する(4): プログラム言語の文法はどうやって定義されるのか? (2007/4/4) Javaでコンパイラの基礎を理解する(3): 簡単な仮想計算機を作ろう(実装編) 教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、Javaを通してコンパイラの仕組みを分かりやすく紹介する。(編集部)(2007/2/23) Javaでコンパイラの基礎を理解する(2): 簡単な仮想計算機を作ろう(準備編) 教育界、技術者コミュニティでJava言語の教育と啓蒙に長年携わってきた筆者が、Javaを通してコンパイラの仕組みを

  • Anders Hejlsberg on Modern Compiler Construction

    The way this story starts is pretty interesting: one day in the lunch room in building 25 I happened to have a chat with the great Anders Hejlsberg about compilers (yeah, it was pretty cool). One thing he mentioned (in passing I might add) was that there is a huge gap between the way compilers are taught in school and the way compilers are implemented nowadays. I mentioned (again in passing) that

    Anders Hejlsberg on Modern Compiler Construction
  • もしも、コンパイラ専門書が読めたなら……(1/4) - @IT

    前回は字句解析について解説し、字句解析プログラムをいくつか作成しました。今回は、字句解析の結果取得できる字句リストを解析して構文木を生成する構文解析と、その結果を使ってオブジェクトコードを生成する方法について解説をします。 「構文解析」とは、いったい何なのか? 連載第4回で、プログラミング言語S1sはBNFを使って次のように定義しました。 <program> ::= main '{' <expression> '}' <expression> ::= <term>{ <opeas> <term> } <term> ::= <factor>{ <opemd> <factor> } <factor> ::= <number>|( <expression> ) <number> ::= <digit>{<digit>} <opeas> ::= + | - <opemd> ::= * | / <d

    もしも、コンパイラ専門書が読めたなら……(1/4) - @IT
  • Oracle Blogs

    Oracle Blogs

    Oracle Blogs
  • Products - Strumenta

  • Bloop · Compile, test and run Scala code fast

    Be more productive in Scala and reduce your compile-edit-test workflow. Use Bloop to enjoy an optimized developer experience that provides features from incremental to batch compilation, from running and debugging on the JVM to building Scala.js or Scala Native applications. Bloop integrates with IDEs and text editors to provide a short feedback cycle and reliable compiler diagnostics. Use Bloop w

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

    近年、Linuxやcygwinの普及によってだれでもyacc/lexを使って新しい言語を作成し、その処理系を作成することができるようになってきた。 G・フリードマンの「Cコンパイラ設計」は、yacc/lexの使い方を丁寧に説明した名著であるが、英語の原も日も絶版で、amazonのオークションでも買えないため日語訳を借り、OCRから復刻することにした。 Linux、cygwinではbison, flexが使われているので若干書と内容が異なる部分があるが、それも別枠で整理してみたいと考えている。 4章以降は、竹 浩のページ(Wiki)に追加中2008/05/15 コンピュータの発達とともに、これまでにCOBOL,FORTRAN、Pasca1,Lisp、C等、数多くのコンピュータ言語が作られてきました。一般には,新たなコンピュータ言語、あるいはそのコンパイラを作るなどということは

  • お薦めのコンパイラの本とか | κeenのHappy Hacκing Blog

    κeenです。たまにお薦めコンパイラの教えてなどのやりとりをTwitterで見かけるのでまとめておきます。 私の主観が入っているので他の方の意見も参考にして下さい。 普通の入門書三書 よく挙げられるのは通称「ドラゴンブック」、「タイガーブック」、「中田先生の最適化なんちゃらの」です。 このうちのどれかを読むと良いでしょう。 こういう教科書系のによくあることですが、だけでなく挙げられている参考文献の情報も重要なので読み終わっても売らないで棚に残しておくことをお薦めします。 コンパイラ[第2版]~ 原理・技法・ツール ~ いわゆるドラゴンブックです。結構古くからあるです。前半が構文解析の理論で、後半でコンパイラ関連の技法などが載っています。 割と技法の紹介が多く、幅は広いですがそれぞれの説明に割かれた紙面は小さいです。 章分けが雑なので目次だけで内容を判断せず、手にとって確かめたほ

    お薦めのコンパイラの本とか | κeenのHappy Hacκing Blog
    uokada
    uokada 2019/02/17
    なぜかおもしろカテゴリに分類されてるな、
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

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

  • The Go low-level calling convention on x86-64

    Note The latest version of this document can be found online at https://dr-knz.net/go-calling-convention-x86-64.html. Alternate formats: Source, PDF. Introduction This article analyzes how the Go compiler generates code for function calls, argument passing and exception handling on x86-64 targets. This expressely does not analyze how the Go compiler lays out data in memory (other than function arg

    The Go low-level calling convention on x86-64
  • コンパイラの構造を解説 | Shinta's Site

    はじめに 久しぶりに Aho氏, Sethi氏, Ullman氏の書いた Compilers(レッド・ドラゴン・ブック)という書籍を目にしたので、昔、コンパイラを作った時の事を思い出しながらコンパイラについてまとめてみました。 Translator (翻訳) Translatorとは、一つのプログラミング言語(Source Language: 原始言語)で書かれたプログラムを入力として取り、別の言語(Object Language or Target Language: 目的言語)のプログラムとしてつくり出すプログラムです。 原始言語が FORTRAN, C, Pascal などの高水準言語で、目的言語がアセンブリ言語や機械語といったような低水準言語である時、そのような Translator をコンパイラ(Compiler) と呼びます。また、原始言語がアセンブリ言語で目的言語が機械語であ

  • 知っていると便利な gcc のオプション

    back GNU gcc を使う際に知っていると便利なオプションを挙げておきます。 注意: これが全部ではありません。gcc には、ほかにも プロセッサ依存の細かいオプションが山のようにありますが、それらは ふつうあまり利用しないので省略しました。 一般的なオプション -c, -o, -I, -g, -O, -L, -l 省略。それくらい知ってること。ちなみに -L と -l は ld へのオプションであり、順番が重要である。 -pipe 各ステージ間で情報のやりとりをするのに temporary file を使わず、 pipe を使うようにする。このオプションが Makefile などに 含まれているときは、たいてい除いたほうがよい。なぜなら、 多くのシステムでは、アセンブラ側がパイプに対応してないから。 言語仕様に関するオプション -ansi 厳格な ANSI 仕様でコンパイルする。こ

  • コンパイラ(gccコマンド)の使い方

    gccはジーシーシーと読む.GNUが作成し,UNIX,Windowsなどで動作するフリー のコンパイラである. ここでは,C言語をコンパイルする際のgccの利用方法を説明するが,C++の場合 にはgccというところをg++に変更すればほぼそのまま利用可能である. イタリック体は,実行時には適当に変えること.ここでは,サンプルとし て,test.cをコンパイルしてtest.o(オブジェクトファイル)または test(実行ファイル)を作成する場合についての説明をする. 主なオプション一覧 -g   (コンパイル,リンク時) コンパイル,リンク時にDEBUG情報を付加する.dbx,gdbなどのデバッガ を使用するときに必要. -c   (コンパイル時) コンパイルのみ行う(オブジェクトファイルを生成する). ex: gcc -c test.c   → test.oを生成 -o test.o  (

  • 1