はじめに
こんにちは
名古屋で3年ほどエンジニアをしている片田と申します
プログラムはなぜ動くのかをいまさらながらに読んだので理解したことをアウトプットしたいと思います
(高次元の理解はしていないのでご了承ください)
概要
今回はCPU編です
-
レジスタ
-
命令の種類
レジスタ
処理対象となる命令やデータを格納する領域
レジスタの種類 | 役割 |
---|---|
アキュムレーター | 演算に利用するデータ or 演算後のデータを格納する |
フラグレジスタ | CPUの演算状態を格納する |
プログラムカウンタ | 次に実行する命令が格納されたメモリのアドレスを格納する |
ベースレジスタ | データ用のメモリ領域の先頭アドレスや基準値を格納する |
インデックスレジスタ | ベースレジスタの増殖値を格納する |
汎用レジスタ | 任意のデータを格納する |
スタックレジスタ | スタック領域の先頭アドレスを格納する |
命令の種類
命令の種類 | 内容 |
---|---|
ジャンプ命令 | 直前に行われた演算の結果を参照して、ジャンプするか判断する 直前の演算結果はフラグレジスタに格納されている |
コール命令 | 関数を呼び出す命令 呼び出し元のアドレスをスタック領域に保存し、関数が定義してある先頭アドレスをプログラムカウンタに設定する |
リターン命令 | スタック領域に保存された呼び出し元のアドレスをプログラムカウンタに設定する |