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

 

MyEnigma Supporters

もしこの記事が参考になり、

ブログをサポートしたいと思われた方は、

こちらからよろしくお願いします。

myenigma.hatenablog.com