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