C

自作コンパイラ開発メモ(2020/12/13)

C

低レイヤを知りたい人のための C コンパイラ作成入門を読んでコンパイラ自作してる時の作業記録です。 対象箇所 for 文に対応するアセンブリを出力できるようにしました。 commit リファレンス 実装 関数 foo が定義された c のプログラムを作成 関数名を識…

自作コンパイラ開発メモ(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

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

ポインタ

C

ポインタとは ポインタとは変数などの値が格納されているアドレスを値とする変数のこと。 アドレスを扱うための演算子 * * は↓の二つの異なる用途で使う。 それぞれ意味が異なる。 宣言 参照 宣言 pがポインタであることを示す。ポインタにも型の宣言が必要…