projects
/
YACASL2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
exec.cの実行ルーチンを関数ポインタでの記述に変更し、整理
[YACASL2.git]
/
include
/
struct.h
diff --git
a/include/struct.h
b/include/struct.h
index
39f874b
..
6a5a0e4
100644
(file)
--- a/
include/struct.h
+++ b/
include/struct.h
@@
-50,38
+50,32
@@
extern SYSTEM *sys;
*/
typedef enum {
/**
*/
typedef enum {
/**
- * オペランド数2または3
+ * オペランド数2または3
。命令語長2
* 第1オペランド: 汎用レジスタ
* 第2オペランド: アドレス
* 第3オペランド: 指標レジスタ
*/
R_ADR_X = 010,
/**
* 第1オペランド: 汎用レジスタ
* 第2オペランド: アドレス
* 第3オペランド: 指標レジスタ
*/
R_ADR_X = 010,
/**
- * オペランド数2または3
+ * オペランド数2または3
。。命令語長2
* 第1オペランド: 汎用レジスタ
* 第2オペランド: アドレスに格納されている内容
* 第3オペランド: 指標レジスタ
*/
* 第1オペランド: 汎用レジスタ
* 第2オペランド: アドレスに格納されている内容
* 第3オペランド: 指標レジスタ
*/
- R_ADR_X_ = 011,
- /**
- * オペランド数2
- * 第1オペランド: 汎用レジスタ
- * 第2オペランド: 汎用レジスタ
- */
R1_R2 = 020,
/**
R1_R2 = 020,
/**
- * オペランド数1または2
+ * オペランド数1または2
。命令語長1
* 第1オペランド: アドレス
* 第2オペランド: 指標レジスタ
*/
ADR_X = 030,
/**
* 第1オペランド: アドレス
* 第2オペランド: 指標レジスタ
*/
ADR_X = 030,
/**
- * オペランド数1
+ * オペランド数1
。命令語長1
* 第1オペランド: 汎用レジスタ
*/
R_ = 040,
/**
* 第1オペランド: 汎用レジスタ
*/
R_ = 040,
/**
- * オペランドなし
+ * オペランドなし
。命令語長1
*/
NONE = 0,
/**
*/
NONE = 0,
/**
@@
-97,6
+91,7
@@
typedef struct {
char *name; /**<命令名 */
CMDTYPE type; /**<命令タイプ */
WORD code; /**<命令コード */
char *name; /**<命令名 */
CMDTYPE type; /**<命令タイプ */
WORD code; /**<命令コード */
+ const void (*ptr); /**<命令の関数ポインタ */
} CMD;
/**
} CMD;
/**
@@
-113,6
+108,7
@@
typedef struct _CMDTAB {
typedef struct {
WORD start; /**<開始アドレス */
WORD end; /**<終了アドレス */
typedef struct {
WORD start; /**<開始アドレス */
WORD end; /**<終了アドレス */
+ bool stop; /**<終了フラグ */
} EXECPTR;
extern EXECPTR *execptr;
} EXECPTR;
extern EXECPTR *execptr;
@@
-149,10
+145,9
@@
void free_cmdtype_code();
bool create_code_type();
/**
bool create_code_type();
/**
- * 命令コードから命令タイプを返す
- * 無効な場合はNONEを返す
+ * 命令コードから命令の関数ポインタを返す
*/
*/
-
CMDTYPE getcmdtype(WORD code
);
+
const void (*getcmdptr(WORD code)
);
/**
* コードがキーの命令ハッシュ表を解放する
/**
* コードがキーの命令ハッシュ表を解放する