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

30
1 コココココココココココココ コ 2 コ

Upload: hoai

Post on 04-Jan-2016

46 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

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

1

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

第 2 回

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

2

COMET II の機械語(マシン語,命令語)

命令語長: *命令数: 38 個種類: 8 種類(1)ロード,ストア,ロードアドレス命令(2)算術,論理演算命令(3)比較演算命令(4)シフト演算命令(5)分岐命令(6)スタック操作命令(7)コール,リターン命令(8)その他(ノーオペレーション命令,スーパバイザコール命令)

下線付き命令: 基本的命令としてはじめに解説

1ワードまたは2ワード

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

3

ロード命令 (LoaD) … レジスタ間

LD GR2, GR5 *

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

4

ロード命令 (LoaD) … メモリ・レジスタ間

LD GR0, #1000

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

5

アドレス修飾

LD GR0, #1000, GR2インデックスレジスタ

注意: GR0 はインデックスレジスタとして使えない

実効アドレス

アドレス #1000 にGR2 の #000A を加えた #100A が

(effective address)

*

* *

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

6

ロード命令 (メモリ・レジスタ間) に対する機械語

ニモニック 第1オペランド 第2オペランド

LD GR, adr [,XR]

0001 0000 **** ****第1ワード

++++ ++++ ++++ ++++第2ワード

**** にはレジスタ番号

アドレス修飾なしなら  0000

<例>  LD GR5, #1007

第1ワード 0001 0000 0101 0000 (#1050)第2ワード 0001 0000 0000 0111 (#1007)

・・・ 逐次制御方式の実行例参照

*

*

*

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

7

フラグレジスタ (Flag Register)

演算命令の実行結果によって値を設定

3ビット構成 OF(Overflow Flag): 演算命令毎に設定が異なる SF(Sign Flag): 演算結果の符号が * が

原則 ZF(Zero Flag): 演算結果が 0 のとき 1 が原則

SF, ZF の原則から外れる命令もあり

負のとき 1

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

8

ロード命令とフラグレジスタ

LD 命令では

LD GR3, #1000 ・・・(LoaD)

#8000 = -32768 < 0

OF は常に 0*

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

9

ストア命令( STore )

ST GR1, #530B

ST 命令ではフラグレジスタは変化しな

*

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

10

ストア命令に対する機械語ニモニック 第1オペランド 第2オペランド

ST GR, adr [,XR]

0001 0001 **** ****第1ワード

++++ ++++ ++++ ++++第2ワード

**** にはレジスタ番号

アドレス修飾なしなら  0000

<例>  ST GR5, #1009  ・・・ 逐次制御方式の実行例参照

第1ワード 0001 0001 0101 0000 (#1150)第2ワード 0001 0000 0000 1001 (#1009)

・・・ 逐次制御方式の実行例参照

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

11

ロードアドレス命令( Load ADdress …) (1)

LAD GR0, #1000*

LAD 命令ではフラグレジスタは変化しな

アドレス値(実効アドレス値)を直接レジスタに転送

*

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

12

ロードアドレス命令( Load ADdress …) (2)

LAD GR0, #1000, GR2

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

13

ロードアドレス命令( Load ADdress …) (3)

LAD GR2, 1, GR2

レジスタの値を1増やすのに使用*

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

14

比較 (前項と似て非なる命令)

LD GR2, 1, GR2

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

15

演習問題 2.1COMETⅡ に,次の一連の動作を実行させる命令列を示せ.(1) メモリの #0100 番地の内容を汎用レジスタ

GR1 に転送する.(2) 汎用レジスタ GR1 の格納する値を汎用レジス

タ GR0 およびメモリの #0101 番地にコピーする.

(3) 汎用レジスタ GR1 の格納する値を 0 にする.(4) 汎用レジスタ GR1 の格納する値を 1 増やす.(5) 汎用レジスタ GR1 の格納する値を 2 減らす.

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

16

演習問題 2.2GR1 から GR0 へのデータ転送は, LAD 命令でアドレ

ス修飾を使えば   LAD GR0, 0, GR1で実現できる.しかし, GR0 から GR1 へデータ転送で

は,    LAD GR1, 0, GR0とすることはできない.その理由を説明せよ.また,どの

ようにCOMETⅡ の機械語の仕様を変えればこれが可能になるのか述べよ.

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

17

算術加算命令・減算命令ADDA GR2, #1000 ・・・ (ADD Arithmetic) SUBA GR2, #1000 ・・・ (SUB Arithmetic)

演算結果が – 32768 ~ 32767 に収まらなくなったとき OF が 1

被演算データを

とみて加算・減算

符号つき2進数*

• レジスタ間命令• メモリ・レジスタ間命令 の両方あり

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

18

算術加算命令 (メモリ・レジスタ間) に対する機械語

ニモニック 第1オペランド 第2オペランド

ADDA GR, adr [,XR]

0010 0000 **** ****第1ワード

++++ ++++ ++++ ++++第2ワード

**** にはレジスタ番号

アドレス修飾なしなら  0000

<例>  ADDA GR5, #1008

第1ワード 0010 0000 0101 0000 (#2050)第2ワード 0001 0000 0000 1000 (#1008)

・・・ 逐次制御方式の実行例参照

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

19

演習問題 2.3

次の (1) ~ (2) について,ふたつの命令の違いを説明せよ.

(1) LAD GR1, 1, GR1 ADDA GR1, 1, GR1

(2) LD GR3, -1, GR3 LAD GR3, -1, GR3

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

20

リターン命令

RET ・・・ (RETurn from subroutine)

                    *

プログラムの実行前の PR (プログラムレジスタ) の内容   ⇒ メモリの他の保管場所へ退避

プログラム終了時に PR (プログラムレジスタ)へ書き戻す

第1ワード 1000 0001 0000 0000 (#8100) ・・・ 逐次制御方式の実行例参照

プログラムの実行終了を制御

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

ニモニックレベルの命令

前回の機械語プログラム例 ニモニックレベルの命令列

LD GR5,#1007ADDA GR5,#1008ST GR5,#1009RET

*

*

*

*

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

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

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

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

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

アセンブリ言語 CASLⅡ

命令書式  ラベル ニモニック 第1オペランド ,第2オペランド ;コ

メント

命令の種類  機械語命令 : COMETⅡ の命令(ニモニックレベル)  アセンブラ命令 : START, END, DS, DC

–                 *– *

 マクロ命令 : IN, OUT, RPUSH, RPOP–

プログラム範囲の宣言データ,メモリ領域の設定を指示

機械語の命令系列を集約

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

アセンブリプログラム記述例

始まりの定義プログラム名

終わりの定義

メモリ領域を確保して RESULT でラベル付け

DATA1 でラベル付けされたメモリ領域にデータを格納*

**

*

*

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

2 パスアセンブラ

  START ↓1 パス目:        ↓2 パス目:        ↓        END

2回の走査(2パス)で機械語に変換

ラベルーアドレス対応表作成

       ビットパターン作成       

*

*

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

アセンブラ実行例(実行前)ソースプログラムラベル   ニモニック オペラン

ドPLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RETDATA1 DC 20DATA2 DC 12RESULT DS 1 END

オブジェクトプログラム

アドレス:機械語  ↓    ↓ 

PLUS : DATA1 : DATA2 : RESULT :

ラベル-アドレス

対応表 

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

アセンブラ実行例(1パス目)ソースプログラムラベル   ニモニック オペラン

ドPLUS START LD GR5,DATA1

ADDA GR5,DATA2

ST GR5,RESULT

RETDATA1 DC 20DATA2 DC 12RESULT DS 1 END

オブジェクトプログラム

アドレス:機械語  ↓    ↓ 

PLUS:

DATA1:

DATA2:

RESULT:

ラベル-アドレス

対応表 

**

**

#1000#1007#1008#1009

#1000:

#1001: #1002: #1003: #1004:

#1005: #1006: #1007:

 #1008:

 #1009:

 

*

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

アセンブラ実行例(2パス目)ソースプログラムラベル   ニモニック オペランドPLUS START LD GR5,DATA1

ADDA GR5,DATA2

ST GR5,RESULT

RETDATA1 DC 20DATA2 DC 12RESULT DS 1 END

☆ 機械語の構成は  テキスト p26

参照

PLUS:

DATA1:

DATA2:

RESULT:

ラベル-アドレス

対応表 

#1000#1007#1008#1009

オブジェクトプログラム

アドレス:機械語  ↓    ↓ #1000:

#1001: #1002: #1003: #1004:

#1005: #1006: #1007:

 #1008:

 #1009:

 

#1050 #1007 #2050 #1008 #1150 #1009 #8100 #0014 #000C #0000

*

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

30

演習問題 2.4次のプログラムは, VALUE1 でラベル付けされたメモリ領域の格納する値から, VALUE2 でラベル付けされたメモリ領域の格納する値を引いた結果を ANSWER でラベル付けされたメモリ領域に格納するアセンブリプログラムである.これを 2 パスアセンブルせよ.

SUBTRA START LD GR3,VALUE1 SUBA GR3,VALUE2 ST GR3,ANSWER RETVALUE1 DC 18VALUE2 DC 24ANSWER DS 1 END