Explore "Full-Stack" in depth!

情報系の専門学校で、今は機械学習に的を絞って学習中。プログラミングを趣味でやりつつ、IT系のあらゆる知識と技術を身に付けるべく奮闘中。

言語処理系

Seccamp2019でCコンパイラ実装に取り組みました

概要 応募課題について 問1 問2 問3 集中開発コースについて 成果物とその進捗について 事前学習期間 当日 総評 概要 セキュリティ・キャンプ全国大会2019に参加しました! 集中開発コースの中にある 「Y-Ⅱ Cコンパイラを自作してみよう!」のテーマに応募し、 普…

フルスクラッチによるセルフホスティングCコンパイラ自作日記#1

目次 目次 概要 本題 ヘッダファイル omo.h util.c token main.c logger.c 目玉:lex.c 総評 概要 以前から rui314/9ccをGoで再実装する勉強法を取っていた私ですが、 drumato.hatenablog.com に述べたように、 Cプログラミングに慣れたいということと、 単純に…

gccの吐くアセンブリをgoccのそれと比較する

目次 目次 概要 本題 最もシンプルなmain関数 変数宣言・四則演算 サブルーチンの定義・呼び出し 総評 概要 gccの吐き出すアセンブリを読んでいく記事です。 具体的には gocc で現在実装できている部分までを 実際にgccに吐かせる事で、 現在デファクトとされて…

1文字変数の確保・演算をgdbで

目次 目次 概要 本題 gdb-pedaを使う 総評 概要 ここらへんの記事の続きです。 drumato.hatenablog.com drumato.hatenablog.com 今回はデバッガの gdbを使いながら、 a=2;b=3;return a*b; というC( といっていいか微妙ですが) のコードをコンパイルして、 アセ…

コンパイラが構文解析してからアセンブリを出力するまで。

目次 目次 概要 本題 return 2+3*4;のケース 構文解析・ASTノード生成 中間表現への変換 レジスタの確保 アセンブリコード出力 総評 概要 この前上げたこちらの記事について、 より深く解説をしていく記事です。 drumato.hatenablog.com 具体的には、 字句解析後…

rui314さんの9ccをGoで再実装しはじめた

目次 目次 概要 本題 今できること 整数一つ・それ以上の加減算をコンパイル Token定義 Lexer定義 再帰下降構文解析器によりASTのAdd-Subノード生成 ASTノード コード生成 中間表現の変換とレジスタの選択 総評 概要 最近、こんな記事書きました。 drumato.hate…

今の自分がコンパイラ自作の為に身につけるべき知識・技術をまとめた。

目次 目次 概要 本題 アセンブラ・アーキテクチャ コンパイラ系 実践 総評 概要 自作コンパイラは今年度(2020年3月まで)にやりたい大きな事の一つになっています。 インタプリタ作って遊んだりしていますが、 そろそろ本気で取り掛かりたいために まずはコンパ…

Go Compilerの実装を読む3(SSA Readmeを読んだ編)

目次 目次 概要 ライセンス Introduction to the Go compiler's SSA backend Key Concepts Values memory types block Functions compilerの最適化 総評 概要 Go Compilerの実装を読む第3弾。 Introduction to the Go compiler's SSA backendの翻訳をしていき…

Go Compilerの実装を読む2(Readmeを読んでgcの概観をする編)

目次 目次 概要 ライセンス Introduction to the Go compiler Parsing Type-checking and AST Transformations Generic SSA Generating machine code 総評 概要 Go Compilerの実装を読もう第二弾。 今回は cmd/compileに記載された、 Introduction to the Go c…

Gopaz第二弾・前回の記事から10日間で追加した仕様紹介

目次 目次 概要 前回からの追加機能 定数定義 変数定義時に型情報を保持 関数定義 配列の要素の型チェック ハッシュのキー/値型チェック 総評 概要 Gopaz第二弾。 前回から機能拡張した部分がいくつかあるので そのお話をしていこうと思います。 前回の記事を…

自作インタプリタ言語「Gopaz」の紹介(鋭意開発・拡張中)

目次 目次 概要 前提:monkey-patch 本題 Gopaz 出来ること 変数宣言・代入 コメント If「式」 数値計算 比較演算子 文字列処理 配列処理 組み込み関数 実装上の工夫 Lexer マルチバイト文字対応 Parser テスト駆動開発・CI 総評 概要 自作のインタプリタ言語を作…

「Go言語でつくるインタプリタ」は前提知識無しで取り組める言語処理系のチュートリアル

目次 目次 概要 本題 私がこの本を購入した理由 数ある言語処理系の技術書でも恐らく最も初歩的 Goは現在恐らく最も可読性が高い言語 何故オススメ? プログラミングの本質が見えるから 単純にコード量が多いのでやってて楽しい テスト駆動開発 読者の為に残…

言語仕様を拡張する流れ(文字列演算)withTDD

目次 目次 概要 前提 本題 総評 概要 もうそろそろこの本も読破しそうです。 読み終わったら書評上げますね。 過去取り組んだ本でも最も評価は高いです。 Go言語でつくるインタプリタ作者: Thorsten Ball,設樂洋爾出版社/メーカー: オライリージャパン発売日: 2…

Go Compilerの実装を読む(トークン編)

目次 目次 概要 対象読者 本題 トークン 総評 概要 私は過去にプログラミングでいくつかのツールを作ってきました。 www.resume.id ここにいろいろ載せてます。 github.com ここにも。 しかし、より大きなものを、本気で作りたい!と考えた私は、 かねてよりめちゃ…