タグ

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

  • 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コンパイラに育て上げました。 興味深いことに、7コミット目あたりですでにコンパイラ全体の骨格ができています。 なんで作ろうと思ったの もともとGoコンパイラを作るなどという発想は1㍉もなかったです。 当時、仕事Goを触る機会はあったものの、週1-2回くらいしか触らないのでなかなか上達しないという焦りを抱えていまいた。 そんなとき Rebuildfm で ruiさんが8ccを作った話を聞いてすごく興味を持ちました。 Rebuild: 153: Connecting The Dots (rui314) さっそく git clone して1コミット目から読んでみたら自分でもやりたくなって、 Go言語に移植してみようと思いました。 1コミット目から順番に、Cで写経してからGoに移植しました

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

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

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

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

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

    Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article? 以前に8ccというCコンパイラをゼロからひとりで開発していたときのログです。40日でセルフコンパイルできるところまで到達しています。日付はすべて2012年です。コードとヒストリはすべてGitHubで見れます。 3月4日 というわけでコンパイラを作っているわけだけど、1000行くらい書いたらそれなりに動き始めてきた。こんなのも動くし: int a = 1; a + 2; // => 3 こういうのも通る。 int a = 61; int *b = &a; *b; // => 61 文字列は文字の配列として扱っていて、配列をポインタに成り下

    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 | 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