しかくいさんかく

解答略のメモ

コンパイラ

24日目: [コンパイラ] コード生成

この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の24日目の記事です。 一昨日は抽象構文木を作り、昨日はシンボルテーブルを作成した。 これらを元にアセンブラのコードを吐き出せば、コンパイラは完成だ。 この最後の工程をコ…

23日目: [コンパイラ] シンボルテーブル

この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の23日目の記事です。 昨日は抽象構文木を作った。 これをアセンブラコードに変換できればコンパイラは完成だ。 変換の手順は、抽象構文木の最上段のPROGRAMノードから出発し、…

22日目: [コンパイラ] 抽象構文木

この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の22日目の記事です。 昨日は頑張って解析木を作った。 今日は解析木の冗長性を省いて、抽象構文木を作る。 抽象構文木とは 昨日は以下のサンプルコードを構文解析した。 // C言…

21日目: [コンパイラ] 構文解析 (実装編)

この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の21日目の記事です。 昨日は人力で構文解析を行った。 今日はその処理をC言語で実装する。 構文解析のアルゴリズム 解析木作成のgifアニメを作った。まずこれを5周ぐらい見て欲…

20日目: [コンパイラ] 構文解析 (人力編)

この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の20日目の記事です。 今までx86のエミュレータやCPUなど、様々な低レイヤ環境を作ってきた。 その中で、個人的に最も製作が難しかったのが、コンパイラの構文解析器だ。 これを…

19日目: [コンパイラ] 字句解析

この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の19日目の記事です。 今日は字句解析をやる。まず昨日のサンプルコードを人力で字句解析し、コツを掴んだところで実装を説明する。 字句解析とは 昨日のサンプルコード // C言…

18日目: [コンパイラ] ソースコードから機械語までの道筋

この記事はひとりでCPUとエミュレータとコンパイラを作る Advent Calendar 2017の18日目の記事です。 昨日はx86のCPUをFPGA上に実装した。 今日からは、そのCPU上で動く機械語を吐くためのコンパイラを製作していく。 昨日まではCPUだのx86だの馴染みのない…