COMP-X の仕様
出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/06/06 01:46 UTC 版)
COMP-X はデータワード長が16ビット、メモリアドレス長も16ビットのコンピュータである。アドレスはバイト単位ではなくワード単位に付与される。ワード中のビットの番号付けは、最上位ビットを 0 番、最下位ビットを 15 番とする。バイト単位の処理という概念がないため、エンディアンも規定されていない。また、COMP-X には入出力の概念が規定されておらず、何らかの手段でメモリ上にプログラムとデータを格納し、実行し、その結果はメモリを読み取ることでわかるようになっている。従って、入出力命令は存在しない。扱う数は整数のみで、2の補数表現を採用している。 レジスタは次の通り。 汎用レジスタ GR0、GR1、GR2、GR3 16ビットのレジスタ。算術演算と論理演算に用いる。このうち GR1、GR2、GR3 は指標(インデックス)レジスタとしても用いる。 基底レジスタ BR 実効アドレス16ビットの上位8ビットを格納してあるレジスタ。BR の下位8ビットは常に 0 である。 制御カウンタ SC 実行中の命令のアドレスが格納される。いわゆるプログラムカウンタである。 条件コードレジスタ CC 加算命令と減算命令の完了時に、演算結果に従って 1 か 0 がセットされる 1 ビットのレジスタ。いわゆるステータスレジスタである。 命令語は全て 1 ワードであり、先頭から順に OP フィールド(4ビット)、GR フィールド(2ビット)、XR フィールド(2ビット)、AD フィールド(8ビット)で構成される。OP フィールドは命令の種類を表すコード(オペコード)であり、COMP-X には 12 種類の命令しかない。GR フィールドでは演算で使用する GR の番号が指定される。また、JC命令では分岐条件の指定に使われる。XR フィールドではアドレス修飾を行う GR の番号が指定され、内容が 0 の場合は GR0 を意味するのではなく、GR によるアドレス修飾をしない。AD フィールドはアドレスの下位8ビットを指定する。 実効アドレスとは命令で使用するメモリアドレスであり、上位8ビットは BR で、下位8ビットは AD フィールドで指定される。XR フィールドが 0 以外の場合、指定された GR の下位8ビットと AD フィールドの値を加算し、結果の下位8ビットを実効アドレスの下位8ビットとする。 命令コードと各命令の概要は以下の通り。 HJ (0x0) - halt and jump SC に実効アドレスを入れて停止。その後スタートボタンを押すと SC の示すアドレスから実行が再開される。GR フィールドは無視される。 JNZ (0x1) - jump if GR is not zero GR フィールドで指定される GR の内容が 0 でないとき、実効アドレスにジャンプする。 JC (0x2) - jump on condition GR フィールドが 00 ならば、何もしないで次の命令に移る。01 ならば、CC が 1 のときに実効アドレスにジャンプ。10 ならば、CC が 0 のときに実効アドレスにジャンプ。11 ならば無条件で実効アドレスにジャンプ。 JSR (0x3) - jump to subroutine GR フィールドで指定した GR に現在の SC の内容に 1 を加算したものを格納し、実効アドレスが指すワードの内容を SC と BR に格納する。BR の内容を変更する唯一の命令である。従って、アドレスの上位8ビットの変化を伴うサブルーチン呼び出しとサブルーチンからの復帰は、必ず JSR 命令を使う。 SFT (0x4) - shift GR フィールドで指定された GR の内容をシフトする。XR フィールドでシフトの方向(0 なら右へ、1 なら左へ)を指定し、AD フィールドでシフトするビット数を指定する。算術シフトであるため、第0ビットはシフトされず、右シフトでは第0ビット(符号ビット)がシフトされて空いた部分にコピーされる。 LAI (0x8) - load address immediate 実効アドレスの下位 8 ビットが GR フィールドで指定された GR の下位 8 ビットに格納され、上位 8 ビットは 0 にされる。いわゆる即値を汎用レジスタにセットする命令。 ADD (0xA) - add GR フィールドで指定された GR の内容と実効アドレスで示されたメモリワードの内容を加算し、同じ GR に格納する。演算結果が負なら CC に 1 をセットし、0 か正なら CC に 0 をセットする。 SUB (0xB) - subtract GR フィールドで指定された GR の内容から、実効アドレスで示されたメモリワードの内容を減算し、結果を同じ GR に格納する。演算結果が負なら CC に 1 をセットし、0 か正なら CC に 0 をセットする。 LD (0xC) - load 実効アドレスで示されたメモリワードの内容を、指定された GR に格納する。 ST (0xD) - store 指定された GR の内容を、実効アドレスで示されたメモリワードに格納する。GR の内容は変化しない。 AND (0xE) - and 指定された GR の内容と実効アドレスで示されたメモリワードの内容のビット毎の論理積をとり、同じ GR に格納する。 EOR (0xF) - exclusive or 指定された GR の内容と実効アドレスで示されたメモリワードの内容のビット毎の排他的論理和をとり、同じ GR に格納する。
※この「COMP-X の仕様」の解説は、「CAP-X」の解説の一部です。
「COMP-X の仕様」を含む「CAP-X」の記事については、「CAP-X」の概要を参照ください。
- COMP-X の仕様のページへのリンク