読者です 読者をやめる 読者になる 読者になる

MyEnigma

とあるエンジニアのブログです。#Robotics #Programing #C++ #Python #MATLAB #Vim #Mathematics #Book #Movie #Traveling #Mac #iPhone

Cコンパイラを知るための基礎知識まとめ

ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み

ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み

目次

はじめに

コンピューターの基礎的な知識を得たいと思い、

シンプルなC言語コンパイラとして有名な8ccを写経しながら、

Cコンパイラの勉強をしています。

github.com

 

元々、情報系出身じゃないので、

色々知らない知識が出てきたので、

メモとして残しておきたいと思います。

 

抽象構文木 (Abstract Syntax Tree: AST)

プログラムの数値や演算子をツリー状に表したものを

抽象構文木(AST)といいます。

コンパイラでは、

まず初めにプログラムを解析して、ASTに変換し、

ASTに基いて、アセンブラに変換するのが

一般的なコンパイラの処理フローのようです。

 

 

アセンブラ(アセンブリ言語)とは?

アセンブラ(アセンブリ言語)は、

機械が実行するための機械語と

C言語などの高級言語の間に位置するプログラミング言語です。

 

一般的にC言語などの高級言語は、

ハードウェアに依存せず、

どのようなハードウェアでも同じコードを利用できますが、

(コンパイラがハードウェアの違いを吸収している)

アセンブリ言語は、

ハードウェアの機械語と1対1で対応しているため、

使用するCPUによって違ったりします。

 

代表的なアセンブラ命令(ニーモニック)

代表的なアセンブラ命令(ニーモニック)をまとめておきます。

MOV

ある数値をコピーするアセンブラ命令。

CPU内のレジスタとメモリ間のデータのコピーに使うことができます。

 

参考資料

myenigma.hatenablog.com

ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み

ふつうのコンパイラをつくろう 言語処理系をつくりながら学ぶコンパイルと実行環境の仕組み

CPUの創りかた

CPUの創りかた

独習アセンブラ

独習アセンブラ