Presentation is loading. Please wait.

Presentation is loading. Please wait.

コンピュータアーキテクチャ 第 4 回.

Similar presentations


Presentation on theme: "コンピュータアーキテクチャ 第 4 回."— Presentation transcript:

1 コンピュータアーキテクチャ 第 4 回

2 SLA とオーバフロー 例:SLA GR5, 1 ・・・ (GR5) = (16384)10 オーバフロー:
演算結果本来の値が –32768 ~ の 範囲に収まらない現象 * 例:SLA GR5, 1 ・・・ (GR5) = (16384)10  ⇒ レジスタ GR5 の値 (16384)10 = #4000 を 2 倍する 16384 × 2 = は –32768 ~ の範囲外! ☆ SLA 命令でのオーバフローはいつも OF に反映されるとは限らない ☆ 最後のビットシフトで 1 が消失すれば OF に 1

3 SLA による負整数の 2 のべき乗倍 SLA GR3, 2 ・・・ (GR3) = -5
(-5)10 (-20)10 ☆ SLA 命令では OF が 1 でもオーバフローが発生したとは限らない

4 算術右シフト演算命令 SRA GR0, 3 ・・・ (Shift Right Arithmetic)
実効アドレス値だけ,レジスタの内容を 右へシフト * 最上位の符号ビットはシフトしない レジスタの右側から送り出されたビットの値は消失する OF にはレジスタから最後に送り出されたビットの値を入れる レジスタの左側の空いたビット位置には符号ビットと同じ値 を入れる

5 SRA による 2 のべき乗割り SRA GR3, 2 ・・・ (GR3) = (16)10
(4)10

6 SRA と端数切り捨て(切り上げ) SRA GR2, 2 ・・・ (GR2) = (9)10 レジスタから 1 の値が消失するとき,
* 9 ÷ 4 = 2.25 の 0.25 は整数ではない レジスタから 1 の値が消失するとき, 符号ビットの値が 0 なら結果の *が起こり, 端数切り捨て 符号ビットの値が 1 なら結果の端数切り上げが起こる.

7 論理左シフト演算命令 SLL GR0, 3 ・・・ (Shift Left Logical) * 実効アドレス値だけ,レジスタの内容を
符号ビットも含めて左へシフト 最上位の符号ビットもシフトする レジスタの左側から送り出されたビットの値は消失する OF にはレジスタから最後に送り出されたビットの値を入れる レジスタの右側の空いたビット位置には 0 を入れる

8 論理右シフト演算命令 SRL GR0, 3 ・・・ (Shift Right Logical)
実効アドレス値だけ,レジスタの内容を符号ビットも含めて右へシフト 最上位の符号ビットもシフトする レジスタの右側から送り出されたビットの値は消失する OF にはレジスタから最後に送り出されたビットの値を入れる レジスタの左側の空いたビット位置には *を入れる

9 1 ワードのビット列に含まれる 1 の数を調べる プログラム
← GR1 をカウンタとして初期化 ← 結果を累積保存 ← GR7 の 1 ビットを右から押し出し * ← OF フラグによって場合分け * ← 終了判定 (GR1 = 16 ?)

10 演習問題 4.1 前出の <プログラム 8 > の開始から終了までに, GR1 およびフラグレジスタの値がどのように変化す
るか順番に示せ.ただし,どちらかのレジスタが変 化するごとに示すこと.

11 演習問題 4.2 算術シフト演算命令実行時のオーバフローと フラグレジスタの OF の関係について述べよ.

12 演習問題 4.3 レジスタ GR1 が –21804 を格納しているとする.以下の各命令を実行したあとの GR1 の値を, から の 10 進数と見なして示せ.またフラグレジスタ (OF, SF, ZF) の値も示せ. SLA GR1, 3 SRA GR1, 3 SLL GR1, 3 SRL GR1, 3

13 演習問題 4.4 連続する 1 の系列を“1 のラン”という.またその系列の 1 の個数を“1 のランの長さ”という.前出の <プログラム 8 > を基にして,メモリの W 番地に格納された値 #6A7E に含まれる 1 のランの長さの最大値を調べて,メモリのN 番地に書き出すプログラム ROF1 を記述せよ.

14 演算結果が * に収まらなくなったとき OF が 1
論理加算命令・減算命令 ADDL GR2, # ・・・ (ADD Logical) SUBL GR2, # ・・・ (SUB Logical) 被演算データを とみて加算・減算 符号なし2進数 * 演算結果が * に収まらなくなったとき OF が 1 0 ~ 65535

15 論理比較命令 CPL GR2, #1000 ・・・ (ComPare Logical) 被演算データを 符号なし2進数 とみて比較
フラグレジスタ * にだけ結果が反映される 汎用レジスタ * には結果が反映されない 第1オペランド値が第2オペランド値より * SF が 1, そうでなければ 0 小さいとき 第1オペランド値と第2オペランド値が * ZF が 1, そうでなければ 0 等しいとき OF はつねに *

16 ノーオペレーション命令 NOP ・・・ (No OPeration) 1ワード命令 何もしない命令
コンピュータの動作の * を考慮するとき意味あり コンピュータの動作はクロックを基準にした * 何もしないステップを挿入することあり タイミング ステップ動作

17 プログラムの実行終了制御 プログラムの終了時 ・・・ RET 命令によって制御が分岐 どこへ? ⇒ そのアドレスはどこに記憶するのか? ⇒
どこへ? ⇒  そのアドレスはどこに記憶するのか? ⇒  その領域をどうやって知るのか? ⇒   * あらかじめ指定された分岐先アドレス #**** * メモリの特定領域 #???? スタックポインタが指示 * メモリ #1006 番地の RET 命令を実行 分岐先アドレスを スタックポインタが指示

18 最も簡単なシステム動作環境 プロセッサ外部から内部の値を直接制御可能 任意のアドレスのメモリ領域を外部から直接読み書き可能 専用の *
プログラムレジスタ スタックポインタ 任意のアドレスのメモリ領域を外部から直接読み書き可能 専用の            * ユーザとコンピュータ内部を媒介する機構 プログラム実行終了制御 例 (1) RET 命令での分岐先 #**** に * ⇒ 無限の繰り返し命令 例 (2) RET 命令での分岐先 #**** に * ⇒ 合図があるまでプロセッサを停止する命令 その間に実行結果を読み出し(レジスタやメモリの値) インターフェース JUMP #**** HALT 命令

19 OS によるシステム動作環境 OS (Operating System) : プログラム実行終了制御
コンピュータシステム全体を管理 外部とのデータのやり取りの機能などを提供 入出力装置の制御 ユーザプログラムを適切なメモリ領域に自動的に割り付け ユーザプログラム : 実行時にユーザプログラムの先頭番地をプログラムレジスタに渡す プログラム実行終了制御 RET 命令での分岐先 #**** に ⇒ OS に制御を返す SVC 命令 (SuperVisor Call 命令): ユーザプログラムから OS の機能を呼び出す命令 マクロ命令 IN, OUT は SVC 命令を含む命令列に展開される 特定の仕事を実行するためのプログラム * * コンピュータの制御を受け継ぐ機能

20 スタック 先入れ後出しの記憶機構 ・・・ メモリ上に設定 領域は自動的に確保される ⇒ メモリのどのアドレスを使うか
先入れ後出しの記憶機構 ・・・ メモリ上に設定 領域は自動的に確保される    ⇒  スタックポインタ SP がスタックの           を記憶する アーキテクチャによっては最上位アドレスのひとつ上を記憶 データを格納するとスタックポインタは上位アドレスへ移動 データを取り出すとスタックポインタは下位アドレスへ移動 メモリのどのアドレスを使うか プログラマが考える必要はない * * 最上位アドレス

21 スタックの例 * プッシュダウン (Push Down) * ポップアップ (Pop Up)

22 スタック操作命令 PUSH adr, x ・・・ (PUSH effective addess) POP r ・・・ (POP up)
実効アドレスをスタックに格納 * スタックの最上位の内容を  レジスタ r に格納 *

23 スタックによる逆ポーランド記法式の計算 * (5-3)*2 ↓逆ポーランド記法 53-2*

24 演習問題 4.5 教科書の <プログラム 10 > の開始から終了まで に GR1 の値がどのように変化するか順番に示せ.
ただし,AREA ではじまるメモリ領域には 53-2* の 文字列を入力するものとする.


Download ppt "コンピュータアーキテクチャ 第 4 回."

Similar presentations


Ads by Google