2020-11-01から1ヶ月間の記事一覧

自作コンパイラ開発メモ(2020/11/22)

C

低レイヤを知りたい人のための C コンパイラ作成入門を読んでコンパイラ自作してる時の作業記録です。 対象箇所 for 文に対応するアセンブリを出力できるようにしました。 commit リファレンス 実装 {と}を解析しトークン化できるようにした。 ブロック文の…

gccでのループ処理のアセンブリを見てみる

c

cの実装 簡単なループ処理です。 int main(void) { int r = 0; for (int i = 0; i < 10; i++) { r++; } return r; } gccでコンパイル ↓のようにコンパイルします。 gcc -S -masm=intel test.c -Sオプションをつけるとアセンブリソースファイルを作成してくれ…

自作コンパイラ開発メモ(2020/11/20)

C

低レイヤを知りたい人のための C コンパイラ作成入門を読んでコンパイラ自作してる時の作業記録です。 対象箇所 for 文に対応するアセンブリを出力できるようにしました。 commit リファレンス 実装 キーワードforを解析しトークン化できるようにした。 for…

コーディングの品質について

はじめに 品質の高いコードって 品質の高いコードのためにできること プログラムを透明にする 透明なコードの良さ 馬鹿みたいに簡単にする アルゴリズムではなくデータ構造に労力をかける 小さいプログラムを書くには頭を使う 使う人のことを意識する インタ…

自作コンパイラ開発メモ(2020/11/08)

低レイヤを知りたい人のための C コンパイラ作成入門を読んでコンパイラ自作してる時の作業記録です。 対象箇所 if 文に続く else をパースし対応するアセンブリを出力できるようにしました。 commit リファレンス 実装 if というキーワードを解析しトークン…

自作コンパイラ開発メモ(2020/11/07)

低レイヤを知りたい人のための C コンパイラ作成入門を読んでコンパイラ自作してる時の作業記録です。 対象箇所 if 文をパースし対応するアセンブリを出力できるようにしました。 commit リファレンス 実装 if というキーワードを解析しトークン化できるよう…

C の変数

C

変数の中身はどこにあるか 変数の中身(データ)はメモリに収められている。 「変数」って何 変数は中身が収められているメモリ領域のアドレスに付けられた名前である。 変数を構成するもの 変数には下の三つの要素が必要。 識別子 アドレス データ型 識別子…