X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=include%2Fstruct.h;h=88ecda95b8d0de4ebba5ee26f4ae7f7b0bde858d;hp=88ceb161c1c052a5637d7398a08fae63d6ae5e3c;hb=00272c954ced5a20c2ea9452ac3d9b4a67dc01c1;hpb=87f1e8bee62d2bf04f2d2cb123e5639e2a2cd9ba diff --git a/include/struct.h b/include/struct.h index 88ceb16..88ecda9 100644 --- a/include/struct.h +++ b/include/struct.h @@ -50,40 +50,38 @@ extern SYSTEM *sys; */ 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; /** @@ -93,6 +91,7 @@ typedef struct { char *name; /**<命令名 */ CMDTYPE type; /**<命令タイプ */ WORD code; /**<命令コード */ + const void (*ptr); /**<命令の関数ポインタ */ } CMD; /** @@ -109,6 +108,7 @@ typedef struct _CMDTAB { typedef struct { WORD start; /**<開始アドレス */ WORD end; /**<終了アドレス */ + bool stop; /**<終了フラグ */ } EXECPTR; extern EXECPTR *execptr; @@ -145,10 +145,9 @@ void free_cmdtype_code(); bool create_code_type(); /** - * 命令コードから命令タイプを返す - * 無効な場合はNONEを返す + * 命令コードから命令の関数ポインタを返す */ -CMDTYPE getcmdtype(WORD code); +const void (*getcmdptr(WORD code)); /** * コードがキーの命令ハッシュ表を解放する