【学習メモ】低レイヤを知りたい人のためのCコンパイラ作成入門
教材
https://www.sigbus.info/compilerbook
その他参考
https://zenn.dev/micin/articles/78f292afb77ef0
環境:
macOS なので、Docker による仮想環境を利用
ARM64
第一章
プログラムカウンタ(PC)・インストラクションポインタ(IP)・・現在実行中の命令のアドレスのこと
CPUの「分岐命令」
「命令セットアーキテクチャ」「命令セット」・・特定の機械語の命令の総称
アセンブラにおいては、第一引数はRDIレジスタ、第二引数はRSIレジスタに入れるようになっている
x86-64の整数演算命令は通常2つのレジスタしか受け取らない
関数呼び出しはスタックを使って実装されている
オンライン・コンパイラ: https://godbolt.org/
文法の記述方法と再帰下降構文解析
BNF と EBNF
EBNF は BNF に簡潔に書くためのいくつかの記号を追加したもので、生成可能なもの自体は等しい
文脈自由文法
1 つの生成規則を1つの関数にマップという構文の解析方法を「再帰下降構文解析」という。
LL(1)パーサ