コンピュータアーキテクチャ
DESCRIPTION
コンピュータアーキテクチャ. 第 2 回. COMET II の機械語(マシン語,命令語). 命令語長: * 命令数: 38 個 種類: 8 種類 (1) ロード , ストア , ロードアドレス命令 (2) 算術, 論理演算命令 (3)比較演算命令 (4)シフト演算命令 (5)分岐命令 (6)スタック操作命令 (7)コール, リターン命令 (8)その他(ノーオペレーション命令,スーパバイザコール命令). 1ワードまたは2ワード. 下線付き命令: 基本的命令としてはじめに解説. - PowerPoint PPT PresentationTRANSCRIPT
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インデックスレジスタ
注意: GR0 はインデックスレジスタとして使えない
実効アドレス
アドレス #1000 にGR2 の #000A を加えた #100A が
(effective address)
*
* *
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)
・・・ 逐次制御方式の実行例参照
*
*
*
7
フラグレジスタ (Flag Register)
演算命令の実行結果によって値を設定
3ビット構成 OF(Overflow Flag): 演算命令毎に設定が異なる SF(Sign Flag): 演算結果の符号が * が
原則 ZF(Zero Flag): 演算結果が 0 のとき 1 が原則
SF, ZF の原則から外れる命令もあり
負のとき 1
8
ロード命令とフラグレジスタ
LD 命令では
LD GR3, #1000 ・・・(LoaD)
#8000 = -32768 < 0
OF は常に 0*
9
ストア命令( STore )
ST GR1, #530B
ST 命令ではフラグレジスタは変化しな
い
*
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)
・・・ 逐次制御方式の実行例参照
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.1COMETⅡ に,次の一連の動作を実行させる命令列を示せ.(1) メモリの #0100 番地の内容を汎用レジスタ
GR1 に転送する.(2) 汎用レジスタ GR1 の格納する値を汎用レジス
タ GR0 およびメモリの #0101 番地にコピーする.
(3) 汎用レジスタ GR1 の格納する値を 0 にする.(4) 汎用レジスタ GR1 の格納する値を 1 増やす.(5) 汎用レジスタ GR1 の格納する値を 2 減らす.
16
演習問題 2.2GR1 から GR0 へのデータ転送は, LAD 命令でアドレ
ス修飾を使えば LAD GR0, 0, GR1で実現できる.しかし, GR0 から GR1 へデータ転送で
は, LAD GR1, 0, GR0とすることはできない.その理由を説明せよ.また,どの
ようにCOMETⅡ の機械語の仕様を変えればこれが可能になるのか述べよ.
17
算術加算命令・減算命令ADDA GR2, #1000 ・・・ (ADD Arithmetic) SUBA GR2, #1000 ・・・ (SUB Arithmetic)
演算結果が – 32768 ~ 32767 に収まらなくなったとき OF が 1
被演算データを
とみて加算・減算
符号つき2進数*
• レジスタ間命令• メモリ・レジスタ間命令 の両方あり
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)
・・・ 逐次制御方式の実行例参照
19
演習問題 2.3
次の (1) ~ (2) について,ふたつの命令の違いを説明せよ.
(1) LAD GR1, 1, GR1 ADDA GR1, 1, GR1
(2) LD GR3, -1, GR3 LAD GR3, -1, GR3
20
リターン命令
RET ・・・ (RETurn from subroutine)
*
プログラムの実行前の PR (プログラムレジスタ) の内容 ⇒ メモリの他の保管場所へ退避
プログラム終了時に PR (プログラムレジスタ)へ書き戻す
第1ワード 1000 0001 0000 0000 (#8100) ・・・ 逐次制御方式の実行例参照
プログラムの実行終了を制御
ニモニックレベルの命令
前回の機械語プログラム例 ニモニックレベルの命令列
LD GR5,#1007ADDA GR5,#1008ST GR5,#1009RET
*
*
*
*
機械語プログラムの決定手順
アセンブリプログラムから機械語プログラムへ
アセンブリ言語 CASLⅡ
命令書式 ラベル ニモニック 第1オペランド ,第2オペランド ;コ
メント
命令の種類 機械語命令 : COMETⅡ の命令(ニモニックレベル) アセンブラ命令 : START, END, DS, DC
– *– *
マクロ命令 : IN, OUT, RPUSH, RPOP–
プログラム範囲の宣言データ,メモリ領域の設定を指示
機械語の命令系列を集約
アセンブリプログラム記述例
始まりの定義プログラム名
終わりの定義
メモリ領域を確保して RESULT でラベル付け
DATA1 でラベル付けされたメモリ領域にデータを格納*
**
*
*
2 パスアセンブラ
START ↓1 パス目: ↓2 パス目: ↓ END
2回の走査(2パス)で機械語に変換
ラベルーアドレス対応表作成
ビットパターン作成
*
*
アセンブラ実行例(実行前)ソースプログラムラベル ニモニック オペラン
ドPLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RETDATA1 DC 20DATA2 DC 12RESULT DS 1 END
オブジェクトプログラム
アドレス:機械語 ↓ ↓
PLUS : DATA1 : DATA2 : RESULT :
ラベル-アドレス
対応表
アセンブラ実行例(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:
*
アセンブラ実行例(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
*
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