1 / 30

コンピュータアーキテクチャ

コンピュータアーキテクチャ. 第 2 回. COMET II の機械語(マシン語,命令語). 命令語長: * 命令数: 38 個 種類: 8 種類 (1) ロード , ストア , ロードアドレス命令 (2) 算術, 論理演算命令 (3)比較演算命令 (4)シフト演算命令 (5)分岐命令 (6)スタック操作命令 (7)コール, リターン命令 (8)その他(ノーオペレーション命令,スーパバイザコール命令). 1ワードまたは2ワード. 下線付き命令: 基本的命令としてはじめに解説.

hoai
Download Presentation

コンピュータアーキテクチャ

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. COMET II の機械語(マシン語,命令語) • 命令語長: * • 命令数: 38 個 • 種類: 8 種類 (1)ロード,ストア,ロードアドレス命令 (2)算術,論理演算命令 (3)比較演算命令 (4)シフト演算命令 (5)分岐命令 (6)スタック操作命令 (7)コール,リターン命令 (8)その他(ノーオペレーション命令,スーパバイザコール命令) 1ワードまたは2ワード 下線付き命令: 基本的命令としてはじめに解説

  3. ロード命令 (LoaD) … レジスタ間 LD GR2, GR5 *

  4. ロード命令 (LoaD) … メモリ・レジスタ間 LD  GR0, #1000

  5. アドレス修飾 * * LD  GR0, #1000, GR2 インデックスレジスタ アドレス#1000に GR2 の #000Aを加えた #100Aが (effective address) 実効アドレス * 注意: GR0 はインデックスレジスタとして使えない

  6. ロード命令 (メモリ・レジスタ間) に対する機械語ロード命令 (メモリ・レジスタ間) に対する機械語 ニモニック 第1オペランド 第2オペランド LD GR,    adr  [,XR] * * **** には レジスタ番号 アドレス修飾なし なら 0000 0001 0000 **** **** 第1ワード * ++++ ++++ ++++ ++++ 第2ワード <例> LD GR5, #1007 第1ワード 0001 0000 0101 0000 (#1050) 第2ワード 0001 0000 0000 0111 (#1007) ・・・ 逐次制御方式の実行例参照

  7. フラグレジスタ (Flag Register) • 演算命令の実行結果によって値を設定 • 3ビット構成 OF(Overflow Flag): 演算命令毎に設定が異なる SF(Sign Flag): 演算結果の符号が *が原則 ZF(Zero Flag): 演算結果が 0 のとき 1 が原則 • SF, ZF の原則から外れる命令もあり 負のとき 1

  8. ロード命令とフラグレジスタ LD 命令では LD GR3, #1000 ・・・ (LoaD) * OF は常に 0 #8000 = -32768 < 0

  9. ストア命令(STore) ST GR1, #530B * ST 命令では フラグレジスタは変化しない

  10. ストア命令に対する機械語 ニモニック 第1オペランド 第2オペランド STGR,    adr  [,XR] **** には レジスタ番号 アドレス修飾なし なら 0000 0001 0001 **** **** 第1ワード ++++ ++++ ++++ ++++ 第2ワード <例> ST GR5, #1009  ・・・ 逐次制御方式の実行例参照 第1ワード 0001 0001 0101 0000 (#1150) 第2ワード 0001 0000 0000 1001 (#1009) ・・・ 逐次制御方式の実行例参照

  11. ロードアドレス命令(Load ADdress)…(1) * LAD  GR0, #1000 * アドレス値(実効アドレス値)を直接レジスタに転送 LAD 命令では フラグレジスタは変化しない

  12. ロードアドレス命令(Load ADdress)…(2) LAD  GR0, #1000, GR2

  13. ロードアドレス命令(Load ADdress)…(3) LAD  GR2, 1, GR2 レジスタの値を1増やすのに使用 *

  14. 比較 (前項と似て非なる命令) LD  GR2, 1, GR2

  15. 演習問題 2.1 COMETⅡに,次の一連の動作を実行させる命令列 を示せ. • メモリの #0100 番地の内容を汎用レジスタ GR1 に転送する. • 汎用レジスタ GR1 の格納する値を汎用レジスタ GR0 およびメモリの #0101 番地にコピーする. • 汎用レジスタ GR1 の格納する値を 0 にする. • 汎用レジスタ GR1 の格納する値を 1 増やす. • 汎用レジスタ GR1 の格納する値を 2 減らす.

  16. 演習問題 2.2 GR1 から GR0 へのデータ転送は, LAD命令でアドレス修飾を 使えば LAD GR0, 0, GR1 で実現できる.しかし,GR0 から GR1 へデータ転送では, LAD GR1, 0, GR0 とすることはできない.その理由を説明せよ.また,どのように COMETⅡの機械語の仕様を変えればこれが可能になるのか 述べよ.

  17. 算術加算命令・減算命令 ADDA GR2, #1000 ・・・ (ADD Arithmetic) SUBA GR2, #1000 ・・・ (SUB Arithmetic) 被演算データを とみて加算・減算 符号つき2進数 * • レジスタ間命令 • メモリ・レジスタ間命令 • の両方あり 演算結果が –32768 ~ 32767 に収まらなくなったとき OF が 1

  18. 算術加算命令 (メモリ・レジスタ間) に対する機械語算術加算命令 (メモリ・レジスタ間) に対する機械語 ニモニック 第1オペランド 第2オペランド ADDA GR,   adr  [,XR] **** には レジスタ番号 アドレス修飾なし なら 0000 0010 0000 **** **** 第1ワード ++++ ++++ ++++ ++++ 第2ワード <例> ADDA GR5, #1008 第1ワード 0010 0000 0101 0000 (#2050) 第2ワード 0001 0000 0000 1000 (#1008) ・・・ 逐次制御方式の実行例参照

  19. 演習問題 2.3 次の(1)~(2)について,ふたつの命令の違いを説明せよ. (1) LAD GR1, 1, GR1 ADDA GR1, 1, GR1 (2) LD GR3, -1, GR3 LAD GR3, -1, GR3

  20. リターン命令 •                    * • プログラムの実行前の PR(プログラムレジスタ) の内容    ⇒ メモリの他の保管場所へ退避 • プログラム終了時に PR(プログラムレジスタ)へ書き戻す • 第1ワード 1000 0001 0000 0000 (#8100) ・・・ 逐次制御方式の実行例参照 RET ・・・ (RETurn from subroutine) プログラムの実行終了を制御

  21. ニモニックレベルの命令 前回の機械語プログラム例 ニモニックレベルの 命令列 * LD GR5,#1007 * ADDA GR5,#1008 ST GR5,#1009 * RET *

  22. 機械語プログラムの決定手順

  23. アセンブリプログラムから機械語プログラムへアセンブリプログラムから機械語プログラムへ

  24. アセンブリ言語 CASLⅡ 命令書式 ラベル ニモニック 第1オペランド,第2オペランド ;コメント 命令の種類 • 機械語命令: COMETⅡ の命令(ニモニックレベル) •  アセンブラ命令: START, END, DS, DC •                 * • * • マクロ命令: IN, OUT, RPUSH, RPOP プログラム範囲の宣言 データ,メモリ領域の設定を指示 機械語の命令系列を集約

  25. アセンブリプログラム記述例 * プログラム名 始まりの定義 * * メモリ領域を確保して RESULTでラベル付け 終わりの定義 * * DATA1でラベル付けされたメモリ領域にデータを格納

  26. 2 パスアセンブラ START         ↓ 1 パス目:         ↓ 2 パス目:         ↓ END 2回の走査(2パス)で機械語に変換 ラベルーアドレス対応表作成 * ビットパターン作成 *

  27. アセンブラ実行例(実行前) オブジェクトプログラム アドレス:機械語  ↓    ↓  ソースプログラム ラベル   ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC 20 DATA2 DC 12 RESULT DS 1 END DATA1: DATA2: RESULT: ラベル-アドレス 対応表 

  28. アセンブラ実行例(1パス目) オブジェクトプログラム アドレス:機械語  ↓    ↓  #1000: #1001: #1002: #1003: #1004: #1005: #1006: #1007: #1008: #1009: ソースプログラム ラベル   ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC 20 DATA2 DC 12 RESULT DS 1 END * #1007 DATA1: DATA2: RESULT: ラベル-アドレス 対応表  #1008 * #1009 *

  29. アセンブラ実行例(2パス目) オブジェクトプログラム アドレス:機械語  ↓    ↓  #1000: #1050 #1001: #1007 #1002: #2050 #1003: #1008 #1004: #1150 #1005: #1009 #1006: #8100 #1007: #0014 #1008: #000C #1009: #0000 ソースプログラム ラベル   ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC 20 DATA2 DC 12 RESULT DS 1 END DATA1: #1007 DATA2: #1008 RESULT: #1009 ☆機械語の構成は   テキスト p28 参照 ラベル-アドレス 対応表 

  30. 演習問題 2.4 次のプログラムは,VALUE1 でラベル付けされたメモリ領域の格納する値から,VALUE2 でラベル付けされたメモリ領域の格納する値を引いた結果を ANSWER でラベル付けされたメモリ領域に格納するアセンブリプログラムである.これを 2 パスアセンブルせよ. SUBTRA START LD GR3,VALUE1 SUBA GR3,VALUE2 ST GR3,ANSWER RET VALUE1 DC 18 VALUE2 DC 24 ANSWER DS 1 END

More Related