2015/5/28 情報技術 ~ソフトウェアの動作~ 2015年5月28日 笠井俊信 今回の目標 ハードウェアを動かすために必要なソフトウェ アについて,その役割,種類,動作などを学び, コンピュータの仕組みと性質を理解する. 1 2015/5/28 コンピュータの基本構成 中央処理装置 制御装置 演算装置 レジスタ群 入力装置 主記憶装置 出力装置 補助記憶装置 コンピュータの構成 CPU CPU内部データバス 演算レジスタ (アキュムレータ) 命令レジスタ A 命令デコーダ データ バス制御 アドレス バス制御 主記憶装置 入出力装置 レジスタ群 制御ロジック ALU 内部制御 信号 システム 制御信号 2 2015/5/28 コンピュータの命令の実行 中央処理装置(CPU) プログラムカウンタ(PC) (1)命令アドレス の指定 アドレス (2)命令フェッチ 命令レジスタ(IR) 主記憶 0 命令 1 命令 2 命令 3 命令 4 (3)命令のデコード デコーダ (4)データアドレス の指定 (6)実行 演算レジスタ(AX) (5)データフェッチ N データ N+1 データ (7)演算結果を格納 命令とプログラム言語 • プログラム言語 – 命令を記述するための言語 • プログラム言語の分類 – 機械語 – アセンブリ言語 – 高級言語 3 2015/5/28 機械語 • コンピュータのハードウェアが解釈できる命令: 2進数で表現された命令 • 機械語の命令は,命令の種類を識別する命令 コードと,命令の実行に必要なデータやアドレ スの指定などをするオペランドの部分からなる • CPUの種類によって回路の構成が異なるため, それに対する命令の種類とコードが異なる 命令の種類 命令区分 転送命令 内容 CPUから主記憶へのデータ転送 主記憶からCPUへのデータ転送 レジスタからレジスタへのデータ転送 四則演算命令 2つのデータ項目の加算・減算・乗算・除算など 論理演算命令 2つのデータ項目の比較,データの論理積・論理 和・論理否定・排他的論理和など 分岐命令 入出力命令 無条件分岐,条件分岐など 入力装置からCPUへのデータの転送 出力装置へのデータの転送など 4 2015/5/28 機械語プログラムの例(問題と設定) 2数の和を求める機械語プログラム 演算レジスタが1つしかない簡単な構成の 仮想CPUを考える. (500)16番地の内容と(501)16番地の内容の和を求め, (502)16番地に結果を書く. 16ビットの命令のうち,4ビットで16種類の命令コードを 指定し,ロード命令は0001,ストア命令は0010,加算 命令は0100,などとする.そして12ビットをオペランド としてデータの記憶場所(アドレス)を直接指定すること にする. 機械語プログラムの例 0001010100000000 0100010100000001 0010010100000010 命令コード 演算レジスタに500番地の内容をロード 演算レジスタに501番地の内容を加算 演算レジスタの内容を502番地にストア オペランド 5 2015/5/28 アセンブリ言語 • 機械語の命令を意味のある英字記号にほ ぼ一対一に置き換えた言語 • アセンブリ言語は機械語に変換されて実 行される • アセンブラ:アセンブリ言語を機械語に変 換するプログラム アセンブリ言語の例 2数の和を求めるアセンブリ言語のプログラム (500)16番地の内容と(501)16番地の内容の和を求め, (502)16番地に結果を書く. ロード命令はLD,ストア命令はST,加算命令はADD と指定し,データの記憶場所(アドレス)を直接指定する. LD AX,500 演算レジスタAXに500番地の内容をロード ADD AX,501 演算レジスタAXに501番地の内容を加算 ST AX,502 演算レジスタAXの内容を502番地にストア 6 2015/5/28 高級言語 • なるべく人間の言葉(自然言語)に近く,あ る程度まとまった処理をハードウェアをあ まり意識せずに記述可能. • ハードウェアの設計に依存せず共通に作 られており,言語ごとに文法や語彙が決め られている. • よく使われる処理はあらかじめ部分プログ ラムとして用意されている. 高級言語の種類 • • • • • • • • FORTRAN(1957~):科学技術計算向き COBOL(1959~):事務処理用 Pascal(1970~):教育用言語 C(1972~):システム記述向き BASIC(1964~):教育用簡易言語 LISP(1962~):記号処理,リスト処理言語 Prolog(1972~):知識処理言語 C++(1980~):システム記述向きのオブジェクト指 向言語 • Java(1995~):環境に独立なオブジェクト指向言語 7 2015/5/28 高級言語の例1(Pascal) 2数の和を求めるPascal言語のプログラム wa := x + y; データは主記憶のアドレスではなく,名前(変数名) をつけて指定.アドレスと名前の対応の意識は不必要. 高級言語の例2(Pascal) 2つの整数をキーボードから読みこんで,2整数と 和を表示するプログラム Program reidai(input, output); var x, y, wa: integer; begin write(‘2つの整数を入力して下さい =>’); read(x, y); wa :=x+y; writeln(x,y, ‘の和は:’, wa) end. 8 2015/5/28 高級言語について • 高級言語は言語処理プログラムによって機械語 に変換される • 言語処理プログラムはコンパイラとインタプリタに 分類できる • コンパイラ:プログラム全体を機械語に変換しオ ブジェクトプログラムを出力 – FORTRAN,COBOL,C,Pascalコンパイラ等 – いくつかのオブジェクトプログラムをつなぎ(リンク), 実行プログラムを生成 • インタプリタ:プログラムの各行を逐次解釈・実行 – BASIC,LISP,Prologインタプリタ等 アルゴリズムとは? 問題を解くための手順を定めたもの 通常,計算機に問題を解かせる手順を指す この手順には曖昧な点があってはダメ 操作のそれぞれが計算機で容易に実現でき る程度の基本的な操作であること • どんな場合でも必ず正しい解が得られること • • • • 9 2015/5/28 命令の種類 命令区分 転送命令 内容 CPUから主記憶へのデータ転送 主記憶からCPUへのデータ転送 レジスタからレジスタへのデータ転送 四則演算命令 2つのデータ項目の加算・減算・乗算・除算など 論理演算命令 2つのデータ項目の比較,データの論理積・論理 和・論理否定・排他的論理和など 分岐命令 入出力命令 無条件分岐,条件分岐など 入力装置からCPUへのデータの転送 出力装置へのデータの転送など 10
© Copyright 2024 ExpyDoc