*/
typedef enum {
/**
- * オペランド数2または3
+ * オペランド数2または3。命令語長2
* 第1オペランド: 汎用レジスタ
* 第2オペランド: アドレス
* 第3オペランド: 指標レジスタ
*/
R_ADR_X = 010,
/**
- * オペランド数2または3
+ * オペランド数2または3。。命令語長2
* 第1オペランド: 汎用レジスタ
* 第2オペランド: アドレスに格納されている内容
* 第3オペランド: 指標レジスタ
*/
- R_ADR_X_ = 011,
- /**
- * オペランド数2
- * 第1オペランド: 汎用レジスタ
- * 第2オペランド: 汎用レジスタ
- */
R1_R2 = 020,
/**
- * オペランド数1または2
+ * オペランド数1または2。命令語長1
* 第1オペランド: アドレス
* 第2オペランド: 指標レジスタ
*/
ADR_X = 030,
/**
- * オペランド数1
+ * オペランド数1。命令語長1
* 第1オペランド: 汎用レジスタ
*/
R_ = 040,
/**
- * オペランドなし
+ * オペランドなし。命令語長1
*/
NONE = 0,
+ /**
+ * COMET II命令以外
+ */
+ NOTCMD = 077,
} CMDTYPE;
/**
char *name; /**<命令名 */
CMDTYPE type; /**<命令タイプ */
WORD code; /**<命令コード */
+ const void (*ptr); /**<命令の関数ポインタ */
} CMD;
/**
typedef struct {
WORD start; /**<開始アドレス */
WORD end; /**<終了アドレス */
+ bool stop; /**<終了フラグ */
} EXECPTR;
extern EXECPTR *execptr;
bool create_code_type();
/**
- * 命令コードから命令タイプを返す
- * 無効な場合はNONEを返す
+ * 命令コードから命令の関数ポインタを返す
*/
-CMDTYPE getcmdtype(WORD code);
+const void (*getcmdptr(WORD code));
/**
* コードがキーの命令ハッシュ表を解放する