タグ

compilerに関するoinumeのブックマーク (15)

  • Goで作るインタプリタ/コンパイラ入門! - Qiita

    記事はQualiArts Advent Calendar 2022 18日目の記事です。 プログラミング言語ってどうできているんだろう?自作できたらめっちゃかっこいい!と思って出会った以下2冊の紹介です🙆‍♂️ Writing An Interpreter In Go tree-walking型インタプリタで動作するプログラミング言語をGoで自作できるようになる 邦訳: Go言語でつくるインタプリタ Writing A Compiler In Go ASTから中間表現であるバイトコードを出力するコンパイラとそれを実行する仮想マシンを実装する 邦訳版はないので英語を頑張って読んだ🥺 (kindle版で翻訳かければよかった) 自作言語の入門書的な立ち位置で、広義のインタプリタ・コンパイラを簡易的にGoで実装してみよう!っていう内容です。 そんなに新しいでもないのですが、簡易的と言っても

    Goで作るインタプリタ/コンパイラ入門! - Qiita
  • 実践的低レイヤプログラミング

    はじめに 学校で習わないが(習う学校もある)、現実に必要になるプログラミング技術に、低レイヤプログラミングなどと呼ばれるものがある 厳密な定義は聞いたことがないし、おそらく存在しないとは思うが、大体のみんなの共通認識として、 「高級プログラミング言語を使わないプログラムを書き、OSで抽象化されないデバイスの機能を使う」といったような認識があると思う。 筆者の経験から言わせてもらうならば、低レイヤプログラミングに関する知識は、プログラミングにおいてあらゆる場面で、常に、少しずつ役立てられる知識だと言えると思う。 普段はRubyPHPなどを書いてる人であったとしても、メモリが足りなくなった場合や、デバッガを使っている場合、性能が足りなくなった場合など、 厳しい環境におかれた時に低レイヤプログラミングに関する知識が必ず役に立つ場面が来ると信じている。 また、役に立つかどうかは置いておいても、「

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

    低レイヤを知りたい人のためのCコンパイラ作成入門 紹介文現在執筆中の「低レイヤを知りたい人のためのCコンパイラ作成入門」(https://www.sigbus.info/compilerbook/)に現時点でお金を払いたい人のためのアイテムです。一口2000円で何口でもお支払いいただけます。多く支払いたい場合は、商品をカートに入れて、チェックアウト時に「BOOST」機能を使ってお金を追加してください。 注意: 課金することによりPDFがダウンロードできますが、内容は上記のページと同一です。お金を払うことによって得られる特典というものは現在においても未来においても特にありません。が完成する保証はありません。実際に読むときはWebブラウザで上記のページを開いて読むことをおすすめします。PDFは古い内容の可能性があります。

    低レイヤを知りたい人のためのCコンパイラ作成入門 - 低レイヤを知りたい人のためのCコンパイラ作成入門 - BOOTH
  • Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita

    Go言語コンパイラをスクラッチから書いてセルフホストを達成しました。 Goコンパイラの実装はほとんど見ずに、ほぼ 8cc というCコンパイラから学んだ知識のみで作りました。 特徴 コンパイルするとアセンブリを吐きます 字句解析・構文解析は手書きです。yacc/lex などのツールは使っていません 標準ライブラリも自作です コード行数はテストをのぞくと 9,152行でした。 セルフホストに必要な機能しかないので、Go言語の全機能は網羅していません。 例えば以下の機能は未実装です。 ガベージコレクション go routineとchannel 浮動小数点 設計 70%くらいは 8cc の設計をそのまま引き継いでいます。 残り25%(map,slice,interface,method,型推論等)が自分のオリジナル、残り5%が9cc、くらいな感じです。 かかった期間 2018/10/7に着手し

    Goコンパイラをゼロから作って147日でセルフホストを達成した - Qiita
  • Cコンパイラ8ccの1コミット目を読んでみよう - Qiita

    8cc とは? rui314 さんが作られたCコンパイラです。 次のような特徴があります。 C言語で書かれている スクラッチから作られた。字句解析・構文解析も手書き。 インクリメンタルな開発 詳しくはご人の記事と rebuildfm第153回をご参照ください。 Cコンパイラをスクラッチから開発してみた(日記) Rebuild: 153: Connecting The Dots (rui314)

    Cコンパイラ8ccの1コミット目を読んでみよう - Qiita
  • 低レイヤを知りたい人のための Cコンパイラ作成入門

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

  • Cコンパイラをスクラッチから開発してみた(日記)

    以前に8ccというCコンパイラをゼロからひとりで開発していたときのログです。40日でセルフコンパイルできるところまで到達しています。日付はすべて2012年です。コードとヒストリはすべてGitHubで見れます。 3月4日 というわけでコンパイラを作っているわけだけど、1000行くらい書いたらそれなりに動き始めてきた。こんなのも動くし: int a = 1; a + 2; // => 3 こういうのも通る。 int a = 61; int *b = &a; *b; // => 61 文字列は文字の配列として扱っていて、配列をポインタに成り下げる振る舞いも実装しているので、こういうのも通る。関数呼び出しもある。 char *c= "ab" + 1; printf("%c", *c); // => b 前回もこのあたりはがんばって実装したからここまで作るのはわりと単純作業かも。二回目だから配列とか

    Cコンパイラをスクラッチから開発してみた(日記)
  • Writing A Compiler In Go | Thorsten Ball

    This is the sequel to Writing An Interpreter In Go. We're picking up right where we left off and write a compiler and a virtual machine for Monkey. Runnable and tested code front and center, built from the ground up, step by step — just like before. But this time, we're going to define bytecode, compile Monkey and execute it in our very own virtual machine. It's the next step in Monkey's evolution

  • COINSコンパイラ・インフラストラクチャ

    <!-- フレーム非対応の場合 --> <body> <p>フレームに対応していないブラウザのようですね。次をクリックしてください。</p> <ul> <li><a href="coins-menu.html">目次</a></li> </ul> </body>

  • Writing An Interpreter In Go

    In this book we will create a programming language together. We'll start with 0 lines of code and end up with a fully working interpreter for the Monkey* programming language. Step by step. From tokens to output. All code shown and included. Fully tested. Buy eBook for $29 Buy paperback for $39 eBook includes PDF, ePub, Mobi (Kindle) and HTML. Read a free sample. Current version: 1.7. Released 7.

  • Writing An Interpreter In Go | Thorsten Ball

  • Go1.7からSSAが導入された - flyhigh

    初めに Go 1.7がリリースされる。目玉の一つは、SSA-IRが導入されたことだろう。Go1.7でSSAが入るんだけど、SSAって何?と居酒屋で聞かれたことが稿の発端だった。私の知識だけでは包括的な説明にならなかったので、いろいろ調べつつそれをまとめた。 以下、一般的な話ではなく、なるべくGoに絞って話を進めている(コンパイラのコードはは cmd/compile/internal/gc あたりにある)。より一般的な話は、参考文献等を示したのでそちらを参考にしてほしい。いろいろ調べて、Goに追加されたSSAについて知るべきことは、SSAが何か?よりも、SSA導入したGoがどうなったか、であると思った。 SSAとは何か SSA とは Static Single Assignmentの略だ。一つの変数への代入は一度しか行われてない事が確約できる形式のコードだ。この形式のコードは、最適化が行い

    Go1.7からSSAが導入された - flyhigh
  • ANTLR

    What is ANTLR? ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured text or binary files. It's widely used to build languages, tools, and frameworks. From a grammar, ANTLR generates a parser that can build and walk parse trees. Terence Parr is a tech lead at Google and until 2022 was a professor of data science /

    oinume
    oinume 2015/12/22
    YACCみたいなものかな?
  • How I wrote a self-hosting C compiler in 40 days

    Rui Ueyama — December 2015 I wrote a self-hosting C compiler which I named 8cc in 40 days. This is a log when I was writing it from scratch by myself in 2012. The code and its history are available at GitHub. Day 8 So I'm writing a compiler. It started working after writing about 1,000 lines of code. Here are some examples of code that work with the compiler: int a = 1; a + 2; // => 3 int a = 61;

  • gc - The Go Programming Language

  • 1