プログラムはなぜ動くのか
①プログラマにとってCPU
とはなにか
プログラムって何?
• コンピュータに実行させる処理の順番を
示すもの。
• 運動会やコンサートのプログラムのよう
に、「何かを行う順番を示すもの」という
意味。
プログラムの中には、何が含まれている?
• プログラムは、命令とデータの集合体に
なっています。
• 例えば、C言語のprintf(”こんにちは”);
というプログラムは、printfが命令であ
り、”こんにちは”がデータです。
マシン語って何?
• CPUが直接解釈できる言語。
• C言語やJAVAなどで記述されたプログ
ラムは,最終的にマシン語に変換されま
す。
実行時のプログラムはどこにある?
• メモリー(メインメモリー)にコピーされて
から実行されます。
メモリーのアドレスとは、何ですか?
• メモリー上で命令やデータが格納されて
いる場所を示す値。
• 番地とも呼びます。
アドレス
メモリーの内容
0100
命令:0105番地の値をアキュムレータに格納せよ
0101
命令:0106番地の値を汎用レジスタに格納せよ
0102
命令:アキュムレータの値に汎用レジスタの値を加算せよ。
0103
命令:アキュムレータの値をディスプレイに表示せよ
0104
命令:プログラムを終了せよ。(OSに戻れ)
0105
データ:123
0106
データ:456
コンピュータの構成要素の中で、プログ
ラムを解釈・実行する装置は何ですか。
• CPU。(CENTRAL PROCESSING
• 中央処理装置のこと。
UNIT)
• プログラムの命令にしたがって、データ
の演算やコンピュータ全体の制御を行う
装置をCPUと呼びます。
• 多くのトランジスタから構成されたICとい
う電子部品からなる。
プログラム実行のイメージ
プログラマが、C言語などの高水準言語でプログラムを記
述
#include<stdio.h>
int main() {
int data[100];
プログラムをコンパイルしてマシン語のEXEファイル
0110010001110010110010
に変換する。
0110010110001100101100
プログラムの起動時に、EXEファイルのコピーがメモリー上
に作成される。
CPUが、プログラムの内容を解釈、実行する。
CPUを構成する4つの機能要素
制御装置
レジスタ1
演算装置
レジスタ2
クロック
・
・
・
レジスタn
コンピュータの5大装置
• 制御装置
入力・記憶・演算・出
力の各装置が効率よ
く動作するようにコント
ロールする装置。
• 演算装置
記憶したデータをも
とに命令に従って四
則演算や比較判断
を行う装置。
全商 3級
レジスタってなに?
• 処理対象となる命令やデータを格納する領
域で一種のメモリーのようなもの。
• 1つのCPUの内部には種類によって異なる
が20~100個ほどのレジスタがある。
• プログラムはレジスタを対象として記述され
る。
• 16ビットPCや32ビットPCという時の「○○
ビット」とは、レジスタの桁数のことを表す。
主なレジスタの種類とその役割
レジスタの種類
役割
アキュムレータ
演算を行うデータ及び演算後のデータを格納する。
フラグ・レジスタ
演算処理後のCPUの状態を格納する。
プログラム・カウンタ
次に実行する命令が格納されたメモリーのアドレスを格納す
る。
ベースレジスタ
データ用のメモリー領域の先頭アドレスを格納する。
インデックスレジスタ ベースレジスタからの相対アドレスをかくのうする。
汎用レジスタ
任意のデータを格納する。
命令レジスタ
命令そのものを格納する。CPUが内部的に利用する。
スタック・レジスタ
スタック領域の先頭アドレスを格納する。
プログラムの流れを決める
プログラムカウンタ
プログラムカウンタ
0100
0101
0102
0103
0104
プ
ロ
グ
ラ
ム
の
流
れ
アドレス
メモリーの内容
0100 命令:0105番地の値をアキュムレータに格納せよ
0101 命令:0106番地の値を汎用レジスタに格納せよ
0102
命令:アキュムレータの値に汎用レジスタの値を加
算せよ。
0103 命令:アキュムレータの値をディスプレイに表示せよ
0104 命令:プログラムを終了せよ。(OSに戻れ)
0105 データ:123
0106 データ:456
*実際には、1つの命令やデータが複数のアドレスにまたがって格納されている。
基本制御構造
処理の流れは、順次、選択、繰り返しの3つの構造で表
現できる。
順次構造
• 順番に実行される処理を表現する
構造
選択構造
• 状態によって処理を選択する構造
繰り返し構造
• 何を、どのような条件の間繰り返す
かを表現する構造
順次構造
処理1
処理2
処理3
選択構造
条件
偽
真
処理1
処理2
繰り返し構造
繰り返し条件
真
処理
偽
選択、繰り返しのしくみは?
• プログラムの中に条件分岐や繰
り返しがある場合は、それらのマ
シン語命令が、プログラムカウン
タの値を任意のアドレスに(+1
でない値に)設定することになる。
CPUにできることは、いたって単純
種類
機能
データ転送命令
レジスタとメモリー、メモリーとメモ
リー、レジスタと周辺装置の間で
データを読み書きする。
演算命令
アキュムレータで算術演算、論理
演算、比較演算、シフト演算を行
う。
ジャンプ命令
条件分岐、繰り返し、無条件の
ジャンプを行う。
コール/リターン命令
関数を呼び出す/呼び出し元に
戻る
②データを2進数でイメー
ジしよう
32ビットは、何バイトですか?
• 8ビット=1バイトなので、32ビットは
32÷8=4バイトになります。
01011100という2進数は、10進数
でいくつになりますか
• 2進数の各桁に重みに掛けた結果を足
すことで10進数に変換できる。
01011100
7
6
5
4
2 2 2 2
3
2
2
2
1
2
0
2
(01011100)2=4+8+16+64
=92
00001111という2進数を、2桁左シ
フトすると、元の数を何倍したことにな
りますか。
• 2進数を1桁左シフトすると、元の値が2
倍されます。2桁左シフトすると、4倍さ
れます。
(00001111)2=15
(00011110)2=30
(00111100)2=60
10
2倍
10
4倍
10
なぜコンピュータが情報を2
進数で扱うのか?
コンピュータ内部がICで構成されている。
ICには数本から数百本のピンがある。
ピンは直流電圧0Vか+5Vのどちら
かの状態になっている。
つまり、ICのピン1本では、2つの状態し
か表せない。
32ビットは、何バイトですか?
• 8ビット=1バイトなので、32ビットは
32÷8=4バイトになります。
ダウンロード

学習を始める。