(since 1998/11)(更新 2004/09/01)

TNO:CASL入門[17]

情報系/IT系の広告を掲載しています。(広告一覧)
©Copyright 1998,2000,2001,2004 小野智章(小野情報設計)
無断転載を禁止します。
本ページは、「Rook」2.00に対応済みです。
CASL入門[目次]
CASL入門[索引]
CASL入門[16]

(chapter17-page1)
17-1.CASL入門のまとめ

 今まで見てきた命令を、機能や命令の記述方法でまとめてみましょう。
注意!カッコ内の命令は、Rook独自に拡張した命令です。 ただし、追加する予定の、未導入の命令も含みます。

 まずは、実効アドレスを使用する命令です。
実効アドレスを即値として使用する命令
 LAD , SLL , SRL , SLA ,SRA ,
 PUSH , SVC
実効アドレスを主記憶装置のアドレスとして使用する命令
 ADDA , SUBA , ADDL , SUBL ,
 CPL , CPA ,
 AND , OR , XOR , LD , ST ,
 JOV , JPL , JZE ,(JPZ),
 JMI , JNZ ,(JMZ), JUMP ,
 CALL

 次は、実効アドレスを表すための指標レジスタの指定以外に、 動作対象として汎用レジスタを指定する命令です。
指定した汎用レジスタの内容が変わらない命令
 CPL , CPA
指定した汎用レジスタの内容が変わる命令
 LAD , SLL , SRL , SLA ,SRA ,
 ADDA , SUBA , ADDL , SUBL ,
 AND , OR , XOR , LD , ST ,
 POP

 オペランドに2つの汎用レジスタのみを指定することで、 レジスタ間演算が出来る命令です。
 ADDA , SUBA , ADDL , SUBL ,
 CPL , CPA ,
 AND , OR , XOR , LD

(chapter17-page2)
 次は、フラグ・レジスタの内容を変える命令です。
オーバ・フロー・フラグが、演算結果が範囲を超えたかどうかを表す命令
 ADDA , SUBA , ADDL , SUBL
オーバ・フロー・フラグが、0となる命令
 LD , CPA , CPL
 AND , OR , XOR
オーバ・フロー・フラグが、 最後にレジスタから送り出されたビットとなる命令
 SLL , SRL , SLA ,SRA
 尚、CPL以外のフラグ・レジスタの正・0・負の設定については、 結果を算術値として行います。

 プログラム・レジスタを変更する命令です。
実効アドレスで指定したアドレスを、プログラム・レジスタにセットする命令
 JOV , JPL , JZE ,(JPZ),
 JMI , JNZ ,(JMZ), JUMP ,
 CALL
プログラム・レジスタにセットするアドレスを、命令中では指定しない命令
 RET , SVC ,(EXIT)
 SVCの仕様はRook独自のものです。

(chapter17-page3)
 スタックを使用する命令です。
スタックにデータを保存する命令
 PUSH , RPUSH , CALL , SVC
スタックからデータを取り出す命令
 POP , RPOP , RET
スタックを一時的に使用する命令
  (差し引きすると、スタック・ポインタは変化しない。)
(READ) ,( WRITE) , IN , OUT
 尚、SVC命令は、 本来はスタックに戻りアドレスを保存して復帰しますが、 RookではOS機能をエミュレータとして実現しているので、 実際にはこの目的ではスタックを使用していません。

 マクロとして定義されている命令です。
(READ) ,( WRITE) , IN , OUT , RPUSH , RPOP , ( EXIT)
( RCLOSE)

 標準入力を切替える命令です。
(ROPEN),( RCLOSE)
 ROPENの実際の命令への変換は、 マクロ命令ではなく、アセンブラ命令として実現しています。

 実行されない命令です。
データを入れる場所が用意される命令
 DC , DS
データを入れる場所が用意されない命令
 START , END ,
 (INCLUDE ;指定したファイルの中身に依存する)
 (MACRO , MACROEND)

CASL入門[目次]
CASL入門[索引]
CASL入門[16]
学習室
トップ・ページへ

質問・ご意見等、お待ちしております。
小野智章(小野情報設計) 
Mail to Mail連絡先
©Copyright 1998,2000,2001,2004 小野智章(小野情報設計)
無断転載を禁止します。