Download presentation
Presentation is loading. Please wait.
1
コンピュータアーキテクチャ 第 2 回
2
COMET II の機械語(マシン語,命令語)
命令語長: * 命令数: 38 個 種類: 8 種類 (1)ロード,ストア,ロードアドレス命令 (2)算術,論理演算命令 (3)比較演算命令 (4)シフト演算命令 (5)分岐命令 (6)スタック操作命令 (7)コール,リターン命令 (8)その他(ノーオペレーション命令,スーパバイザコール命令) 下線付き命令: 基本的命令としてはじめに解説
3
ニモニックレベルの命令形式(再) 命令内容を表す記号(ニモニック) 命令コード: オペランド: 命令操作の対象となるレジスタやメモリアドレス
機械語と同レベルの抽象度 人間にとっての了解性良好 オペランド: 命令コード 第1オペランド,第2オペランド ニモニック r,adr[,x] ・・・ 2 ワード命令 ニモニック r1,r2 ・・・ 1 ワード命令 命令内容を表す記号(ニモニック) 命令操作の対象となるレジスタやメモリアドレス 3 3
4
ロード命令 (LoaD) … レジスタ間 *
5
ロード命令 (LoaD) … メモリ・レジスタ間
LD GR0, #1000
6
アドレス修飾 LD GR0, #1000, GR2 * * アドレス #1000 に GR2 の #000A を加えた #100A が
(effective address) * 注意: GR0 はインデックスレジスタとして使えない
7
機械語レベルの命令形式(再) オペレーション (Op) フィールド: 命令に対応したコードを割り付ける
汎用レジスタ (r) フィールド: 0000 ~ 0111 ( GR0 ~ GR7 ) インデックスレジスタ (x) フィールド: アドレス (adr) フィールド: #0000 ~ #FFFF 命令に対応したコードを割り付ける 0001 ~ 0111 ( GR1 ~ GR7 ) 7 7
8
ロード命令 (メモリ・レジスタ間) に対する機械語
ロード命令 (メモリ・レジスタ間) に対する機械語 ニモニック 第1オペランド 第2オペランド LD GR, adr [,XR] * * 第1ワード **** **** * 第2ワード <例> LD GR5, #1007 第1ワード (#1050) 第2ワード (#1007) ・・・ 逐次制御方式の実行例参照
9
フラグレジスタ (Flag Register)
演算命令の実行結果によって値を設定 3ビット構成 OF(Overflow Flag): 演算命令毎に設定が異なる SF(Sign Flag): 演算結果の符号が *が原則 ZF(Zero Flag): 演算結果が 0 のとき 1 が原則 SF, ZF の原則から外れる命令もあり
10
ロード命令とフラグレジスタ LD GR3, # ・・・ (LoaD) LD 命令では * #8000 = < 0
11
ストア命令(STore) * ST 命令では フラグレジスタは変化しない
12
ストア命令に対する機械語 ST GR, adr [,XR] ニモニック 第1オペランド 第2オペランド
ニモニック 第1オペランド 第2オペランド ST GR, adr [,XR] **** には レジスタ番号 アドレス修飾なし なら 0000 第1ワード **** **** 第2ワード <例> ST GR5, #1009 ・・・ 逐次制御方式の実行例参照 第1ワード (#1150) 第2ワード (#1009) ・・・ 逐次制御方式の実行例参照
13
ロードアドレス命令(Load ADdress)…(1)
* * LAD 命令では フラグレジスタは変化しない この場合の #1000 のように,命令内に直接 書かれた値を という *
14
ロードアドレス命令(Load ADdress)…(2)
LAD GR0, #1000, GR2
15
ロードアドレス命令(Load ADdress)…(3)
LAD GR2, 1, GR2 *
16
比較 (前項と似て非なる命令) LD GR2, 1, GR2
17
演習問題 2.1 COMETⅡに,次の一連の動作を実行させる命令列 を示せ.
メモリの #0100 番地の内容を汎用レジスタ GR1 に転送する. 汎用レジスタ GR1 の格納する値を汎用レジスタ GR0 およびメモリの #0101 番地にコピーする. 汎用レジスタ GR1 の格納する値を 0 にする. 汎用レジスタ GR1 の格納する値を 1 増やす. 汎用レジスタ GR1 の格納する値を 2 減らす.
18
演習問題 2.2 GR1 から GR0 へのデータ転送は, LAD命令でアドレス修飾を 使えば LAD GR0, 0, GR1
とすることはできない.その理由を説明せよ.また,どのように COMETⅡの機械語の仕様を変えればこれが可能になるのか 述べよ.
19
演算結果が –32768 ~ 32767 に収まらなくなったとき OF が 1
算術加算命令・減算命令 ADDA GR2, # ・・・ (ADD Arithmetic) SUBA GR2, # ・・・ (SUB Arithmetic) 被演算データを とみて加算・減算 * レジスタ間命令 メモリ・レジスタ間命令 の両方あり 演算結果が –32768 ~ に収まらなくなったとき OF が 1
20
算術加算命令 (メモリ・レジスタ間) に対する機械語
算術加算命令 (メモリ・レジスタ間) に対する機械語 ニモニック 第1オペランド 第2オペランド ADDA GR, adr [,XR] **** には レジスタ番号 アドレス修飾なし なら 0000 第1ワード **** **** 第2ワード <例> ADDA GR5, #1008 第1ワード (#2050) 第2ワード (#1008) ・・・ 逐次制御方式の実行例参照
21
演習問題 2.3 次の(1)~(2)について,ふたつの命令の違いを説明せよ. (1) LAD GR1, 1, GR1
ADDA GR1, 1, GR1 (2) LD GR3, -1, GR3 LAD GR3, -1, GR3
22
リターン命令 RET ・・・ (RETurn from subroutine) * プログラムの実行前の PR(プログラムレジスタ) の内容
* プログラムの実行前の PR(プログラムレジスタ) の内容 ⇒ メモリの他の保管場所へ退避 プログラム終了時に PR(プログラムレジスタ)へ書き戻す 第1ワード (#8100) ・・・ 逐次制御方式の実行例参照
23
ニモニックレベルの命令 前回の機械語プログラム例 ニモニックレベルの 命令列 * * * *
24
機械語プログラムの決定手順
25
アセンブリプログラムから 機械語プログラムへ
26
アセンブリ言語 CASLⅡ 命令書式 命令の種類 ラベル ニモニック 第1オペランド,第2オペランド ;コメント
ラベル ニモニック 第1オペランド,第2オペランド ;コメント 命令の種類 機械語命令: COMETⅡ の命令(ニモニックレベル) アセンブラ命令: START, END, DS, DC * * マクロ命令: IN, OUT, RPUSH, RPOP 機械語の命令系列を集約
27
アセンブリプログラム記述例 * * * * *
28
2 パスアセンブラ 2回の走査(2パス)で機械語に変換 START ↓ 1 パス目: 2 パス目: END * *
29
アセンブラ実行例(実行前) ソースプログラム オブジェクトプログラム ラベル ニモニック オペランド アドレス:機械語 PLUS START
ラベル ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC DATA2 DC RESULT DS END オブジェクトプログラム アドレス:機械語 ↓ ↓ PLUS : DATA1 : DATA2 : RESULT : ラベル-アドレス 対応表
30
アセンブラ実行例(1パス目) ソースプログラム オブジェクトプログラム ラベル ニモニック オペランド アドレス:機械語
ラベル ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC DATA2 DC RESULT DS END オブジェクトプログラム アドレス:機械語 ↓ ↓ * * PLUS : DATA1 : DATA2 : RESULT : ラベル-アドレス 対応表 * * *
31
アセンブラ実行例(2パス目) ソースプログラム オブジェクトプログラム ラベル ニモニック オペランド アドレス:機械語
ラベル ニモニック オペランド PLUS START LD GR5,DATA1 ADDA GR5,DATA2 ST GR5,RESULT RET DATA1 DC DATA2 DC RESULT DS END オブジェクトプログラム アドレス:機械語 ↓ ↓ #1000: #1001: #1002: #1003: #1004: #1005: #1006: #1007: #1008: #1009: * PLUS : DATA1 : DATA2 : RESULT : #1000 ☆機械語の構成は テキスト p26 参照 ラベル-アドレス 対応表 #1007 #1008 #1009
32
演習問題 2.4 次のプログラムは,VALUE1 でラベル付けされたメモリ領域の格納する値から,VALUE2 でラベル付けされたメモリ領域の格納する値を引いた結果を ANSWER でラベル付けされたメモリ領域に格納するアセンブリプログラムである.これを 2 パスアセンブルせよ. SUBTRA START LD GR3,VALUE1 SUBA GR3,VALUE2 ST GR3,ANSWER RET VALUE1 DC VALUE2 DC ANSWER DS END
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.