Presentation is loading. Please wait.

Presentation is loading. Please wait.

プログラムはなぜ動くのか.

Similar presentations


Presentation on theme: "プログラムはなぜ動くのか."— Presentation transcript:

1 プログラムはなぜ動くのか

2 ①プログラマにとってCPUとはなにか

3 プログラムって何? コンピュータに実行させる処理の順番を示すもの。
運動会やコンサートのプログラムのように、「何かを行う順番を示すもの」という意味。

4 プログラムの中には、何が含まれている? プログラムは、命令とデータの集合体になっています。 例えば、C言語のprintf(”こんにちは”);というプログラムは、printfが命令であり、”こんにちは”がデータです。

5 マシン語って何? CPUが直接解釈できる言語。 C言語やJAVAなどで記述されたプログラムは,最終的にマシン語に変換されます。

6 実行時のプログラムはどこにある? メモリー(メインメモリー)にコピーされてから実行されます。

7 メモリーのアドレスとは、何ですか? メモリー上で命令やデータが格納されている場所を示す値。 番地とも呼びます。 アドレス メモリーの内容
0100 0101 0102 0103 0104 アドレス 0105 0106 メモリーの内容 命令:0105番地の値をアキュムレータに格納せよ 命令:0106番地の値を汎用レジスタに格納せよ 命令:アキュムレータの値に汎用レジスタの値を加算せよ。 命令:アキュムレータの値をディスプレイに表示せよ 命令:プログラムを終了せよ。(OSに戻れ) データ:123 データ:456

8 コンピュータの構成要素の中で、プログラムを解釈・実行する装置は何ですか。
CPU。(CENTRAL PROCESSING UNIT) 中央処理装置のこと。 プログラムの命令にしたがって、データの演算やコンピュータ全体の制御を行う装置をCPUと呼びます。 多くのトランジスタから構成されたICという電子部品からなる。

9 プログラム実行のイメージ プログラムをコンパイルしてマシン語のEXEファイルに変換する。 CPUが、プログラムの内容を解釈、実行する。
プログラマが、C言語などの高水準言語でプログラムを記述 プログラムをコンパイルしてマシン語のEXEファイルに変換する。 プログラムの起動時に、EXEファイルのコピーがメモリー上に作成される。 CPUが、プログラムの内容を解釈、実行する。 #include<stdio.h> int main() {      int data[100]; 0110010001110010110010 0110010110001100101100

10 CPUを構成する4つの機能要素 制御装置 演算装置 クロック レジスタ1 レジスタ2 レジスタn

11 コンピュータの5大装置 制御装置 演算装置 入力・記憶・演算・出力の各装置が効率よく動作するようにコントロールする装置。
制御装置   入力・記憶・演算・出力の各装置が効率よく動作するようにコントロールする装置。 演算装置   記憶したデータをもとに命令に従って四則演算や比較判断を行う装置。 全商 3級

12 レジスタってなに? 処理対象となる命令やデータを格納する領域で一種のメモリーのようなもの。
1つのCPUの内部には種類によって異なるが20~100個ほどのレジスタがある。 プログラムはレジスタを対象として記述される。 16ビットPCや32ビットPCという時の「○○ビット」とは、レジスタの桁数のことを表す。

13 主なレジスタの種類とその役割 レジスタの種類 役割 アキュムレータ 演算を行うデータ及び演算後のデータを格納する。 フラグ・レジスタ
演算処理後のCPUの状態を格納する。 プログラム・カウンタ 次に実行する命令が格納されたメモリーのアドレスを格納する。 ベースレジスタ データ用のメモリー領域の先頭アドレスを格納する。 インデックスレジスタ ベースレジスタからの相対アドレスをかくのうする。 汎用レジスタ 任意のデータを格納する。 命令レジスタ 命令そのものを格納する。CPUが内部的に利用する。 スタック・レジスタ スタック領域の先頭アドレスを格納する。

14 プログラムの流れを決める プログラムカウンタ
アドレス メモリーの内容 0100 0100 命令:0105番地の値をアキュムレータに格納せよ プログラムの流れ 0101 0101 命令:0106番地の値を汎用レジスタに格納せよ 0102 0102 命令:アキュムレータの値に汎用レジスタの値を加算せよ。 0103 0103 命令:アキュムレータの値をディスプレイに表示せよ 0104 0104 命令:プログラムを終了せよ。(OSに戻れ) 0105 データ:123 0106 データ:456 *実際には、1つの命令やデータが複数のアドレスにまたがって格納されている。

15 基本制御構造 順次構造 選択構造 繰り返し構造 順番に実行される処理を表現する構造
処理の流れは、順次、選択、繰り返しの3つの構造で表現できる。 順番に実行される処理を表現する構造 順次構造 状態によって処理を選択する構造 選択構造 何を、どのような条件の間繰り返すかを表現する構造 繰り返し構造

16 順次構造 処理1 処理2 処理3

17 選択構造 条件 処理2 処理1

18 繰り返し構造 繰り返し条件 処理

19 選択、繰り返しのしくみは? プログラムの中に条件分岐や繰り返しがある場合は、それらのマシン語命令が、プログラムカウンタの値を任意のアドレスに(+1でない値に)設定することになる。

20 CPUにできることは、いたって単純 種類 機能 データ転送命令
レジスタとメモリー、メモリーとメモリー、レジスタと周辺装置の間でデータを読み書きする。 演算命令 アキュムレータで算術演算、論理演算、比較演算、シフト演算を行う。 ジャンプ命令 条件分岐、繰り返し、無条件のジャンプを行う。 コール/リターン命令 関数を呼び出す/呼び出し元に戻る

21 ②データを2進数でイメージしよう

22 32ビットは、何バイトですか? 8ビット=1バイトなので、32ビットは  32÷8=4バイトになります。

23 01011100 (01011100)2=4+8+16+64 =92 01011100という2進数は、10進数でいくつになりますか 2
2進数の各桁に重みに掛けた結果を足すことで10進数に変換できる。 01011100 (01011100)2= =92

24 00001111という2進数を、2桁左シフトすると、元の数を何倍したことになりますか。
2進数を1桁左シフトすると、元の値が2倍されます。2桁左シフトすると、4倍されます。 (00001111)2=1510 2倍 4倍 (00011110)2=3010 (00111100)2=6010

25 なぜコンピュータが情報を2進数で扱うのか?
コンピュータ内部がICで構成されている。 ICには数本から数百本のピンがある。 ピンは直流電圧0Vか+5Vのどちらかの状態になっている。 つまり、ICのピン1本では、2つの状態しか表せない。

26 32ビットは、何バイトですか? 8ビット=1バイトなので、32ビットは  32÷8=4バイトになります。


Download ppt "プログラムはなぜ動くのか."

Similar presentations


Ads by Google