COMET の仕様
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/08/10 16:51 UTC 版)
ここでは、COMET IIに改訂される前のCOMETの仕様について述べる。COMET IIとの違いについては#仕様改訂による変更点を参照されたい。 COMETは、1ワード長が16ビットの固定長語で表現され、処理の対象となるデータは全てワード単位で行われる。1ワードを構成するビットの並びは、最上位ビットを0番、最下位ビットを15番とする(COMET IIで変更されている)。制御方式は逐次処理方式であり、命令語は2ワードの固定長で表現される。扱うデータは算術データ、論理データ、文字データの3種類がある、算術データは 1ワードのデータを2の補数表現で表現し、論理データは符号無し整数として扱う。文字データはJIS X 0201規格を採用している。 レジスタは次の通り。 汎用レジスタ GR0、GR1、GR2、GR3、GR4 16ビットのレジスタ。算術演算と論理演算、比較およびシフト演算に用いる。このうち GR1からGR4 は指標(インデックス)レジスタとしても用いる。GR4はスタックポインタとして用いる。スタックポインタにはスタックの最上段のアドレスが保持される。 プログラムカウンタ PC 実行中の命令語の先頭アドレスを保持し、命令が終了すると次に実行される命令語の先頭アドレスが設定される。上述のようにCOMETの命令語は2ワード固定長なので分岐命令のように次に実行するアドレスを指定するもの以外の場合は保持しているアドレスに 2 を加算する。 フラグレジスタ FR 2ビットのレジスタで、実行された命令が算術演算や論理演算命令の場合、実行結果が負なら10、正なら00、零なら01が設定される。比較演算命令も同様に比較結果に応じて値が設定される。 前述の通りCASLは命令語を2ワードの固定長として扱う。命令語の構成は先頭から順に OPフィールド(8ビット)、GRフィールド(4ビット)、XRフィールド(4ビット)、ADRフィールド(16ビット)のデータアドレスと続く。COMETの前身であるCOMP-Xと同様の構成だが各フィールドのビット数が違うことに注意されたい。 OP フィールドは命令の種類を表すコード(オペコード部)であり、初期のCOMETでは23種類の命令が用意されており、COMET IIでは 28種類に拡張されている。GR フィールドでは演算で使用する GR の番号が指定される。分岐命令やスタック操作の場合は GRを指定することはないので、これらの命令ではこの部分は無視される(何を指定しても問題ない)。XR フィールドではアドレス修飾を行う GR の番号が指定され、内容が0の場合はGR0を意味するのではなく、GR によるアドレス修飾をしないGRフィールドと同様、アドレス修飾を持たない命令においては無視される。ADRフィールドは処理対象となるアドレスが指定され、このアドレスにXRフィールドのアドレス修飾を施したものが実行アドレスとして使用される。 なお、COMP-Xと異なり、COMETでは命令の具体的なオペコードは定義されていない(定義の後に、定義の一部でないと明示のうえで参考資料として示されている)。 命令コードと各命令の概要は以下の通り。なお、書き方の[]は省略可能を意味している。 LD GR, adr[, XR] - LoaD 有効アドレスの内容を指定した GRアドレスに設定する。 ST GR, adr[, XR] - STore GRレジスタに設定された内容を実行アドレスに格納する。 LEA GR, adr[, XR] - Load Effective Address 有効アドレスの番地をGRに格納する。実行後、格納された値に応じて、FRに01、10、00を設定する。COMET IIの改訂後にこの命令は廃止され、代わりにFRレジスタを更新しないLAD命令が追加された。 ADD GR, adr[, XR] - ADD arithmetic GRの内容と有効アドレスの内容を加算し、結果をGRに格納する。このとき、FRの設定も行う。COMET IIの改訂後に、名称をADDAと改称している。 SUB GR, adr[, XR] - SUBtract arithmetic GRの内容から有効アドレスの内容を減算し、結果をGRに格納する。このとき、FRの設定も行う。ADDと同様、COMET IIの改訂後に名称をSUBAと改称している。 AND GR, adr[, XR] GRの内容と有効アドレスの内容の論理積をGRに格納する。このとき、FRの設定も行う。 OR GR, adr[, XR] GRの内容と有効アドレスの内容の論理和をGRに格納する。このとき、FRの設定も行う。 EOR GR, adr[, XR] - Exclusive OR GRの内容と有効アドレスの内容の排他的論理和をGRに格納する。このとき、FRの設定も行う。COMET IIの改訂後に、名称をXORと改称している。 CPA GR, adr[, XR] - ComPare Arithmetic GRの内容と有効アドレスの内容を算術比較し、GRの内容の方が大きければ、FRに00を、等しければ01を、小さければ10を設定する。 CPL GR, adr[, XR] - ComPare Logic CPAと同様だが、内容を算術データではなく論理データとして扱う。 SLL GR, adr[, XR] - Shift Left Logic 左に有効アドレス分シフトする、シフトにより欠落したデータは捨てられ、空いたビットには0が入る。シフト後の内容により、FRに値が設定される。 SLA GR, adr[, XR] - Shift Left Arithmetic 符号を表すビット(第0ビット、COMET IIでは第15ビット)を除いて左に有効アドレス分シフトする。シフトにより欠落したデータは捨てられ、空いたビットには 0が入る。シフト後の内容により、FRに値が更新される。 SRL GR, adr[, XR] - Shift Right Logic SLLの右シフト版。 SRA GR, adr[, XR] - Shift Right Arithmetic SLAの右シフト版。 JPZ adr[, XR] - Jump on Plus or Zero FRの値が00か01の場合は有効アドレスに分岐する。COMET IIの改訂により廃止される。 JMI adr[, XR] - Jump on MInus FRの値が10の場合は有効アドレスに分岐する。 JNZ adr[, XR] - Jump on Non Zero FRの値が10か01の場合は有効アドレスに分岐する。 JZE adr[, XR] - Jump on ZEro FRの値が00の場合は有効アドレスに分岐する。 JMP adr[, XR] - unconditional JuMP 無条件に有効アドレスに分岐する。 PUSH adr[, XR] - PUSH effective address 有効アドレスをスタックに格納する。このとき GR4にスタックの先頭アドレスが設定される。 POP GR - POP up スタックの先頭に格納されているアドレスを GRに設定する。GR4に新しいスタックの先頭アドレスが設定される。 CALL adr[, XR] - CALL subroutine サブルーチンを呼び出す。 RET - RETurn form subroutine サブルーチンから呼び出し、呼び出し元に復帰する。
※この「COMET の仕様」の解説は、「CASL」の解説の一部です。
「COMET の仕様」を含む「CASL」の記事については、「CASL」の概要を参照ください。
- COMET の仕様のページへのリンク