ヘッダーファイル依存関係の整理
[YACASL2.git] / include / struct.h
index d4d87d2..dce1ddf 100644 (file)
@@ -53,6 +53,15 @@ typedef struct {
  */
 extern SYSTEM *sys;
 
+/**
+ * 命令ハッシュ表のハッシュの種類
+ */
+typedef enum {
+    HASH_CMDTYPE,
+    HASH_CODE,
+    HASH_MAX,
+} CMDTAB_HASH;
+
 /**
  * COMET II 命令
  * 命令タイプは、オペランドにより5種類に分類
@@ -111,7 +120,7 @@ typedef struct {
  */
 typedef struct _CMDTAB {
     struct _CMDTAB *next;       /**<リスト次項目へのポインタ */
-    COMET2CMD *cmd;             /**<命令コード表の項目 */
+    const COMET2CMD *cmd;       /**<命令コード表の項目 */
 } CMDTAB;
 
 /**
@@ -125,6 +134,33 @@ typedef struct {
 
 extern EXECPTR *execptr;
 
+/**
+ * @brief 実行モードを表すデータ型
+ */
+typedef struct {
+    bool trace;           /**<レジストリの内容をステップごとに表示する場合はtrue */
+    bool logical;         /**<レジストリの内容を論理値(0から65535)で表示する場合はtrue */
+    bool dump;            /**<メモリの内容をステップごとに表示する場合はtrue */
+    int dump_start;       /**<メモリの内容をステップごとに表示する場合の開始アドレス */
+    int dump_end;         /**<メモリの内容をステップごとに表示する場合の終了アドレス */
+    bool monitor;         /**<モニターモードの場合はtrue */
+    bool step;            /**<ステップ実行の場合はtrue */
+} EXECMODE;
+
+/**
+ * @brief 実行モード: trace, logical, dump, monitor, step
+ */
+extern EXECMODE execmode;
+
+/**
+ * @brief 汎用レジスタの番号からレジスタを表す文字列を返す
+ *
+ * @return 汎用レジスタを表す文字列。「GR0」「GR1」・・・「GR7」のいずれか
+ *
+ * @param word レジスタ番号[0-7]を表すWORD値
+ */
+char *grstr(WORD word);
+
 /**
  * COMET II仮想マシンのリセット
  */
@@ -136,25 +172,24 @@ void reset(int memsize, int clocks);
 void shutdown();
 
 /**
- * 名前とタイプがキーの命令ハッシュ表を作成する
+ * @brief 命令ハッシュ表を作成する
+ *
+ * @return なし
+ *
+ * @param hash ハッシュ値
  */
-bool create_cmdtype_code();
-
-/**
- * 命令の名前とタイプから、命令コードを返す
- * 無効な場合は0xFFFFを返す
- */
-WORD getcmdcode(const char *cmd, CMDTYPE type);
+bool create_cmdtable(CMDTAB_HASH hash);
 
 /**
- * å\90\8då\89\8dã\81¨ã\82¿ã\82¤ã\83\97ã\81\8cã\82­ã\83¼ã\81®å\91½ä»¤ã\83\8fã\83\83ã\82·ã\83¥è¡¨ã\82\92解æ\94¾ã\81\99ã\82\8b
+ * 命令ハッシュ表を解放する
  */
-void free_cmdtype_code();
+void free_cmdtable(CMDTAB_HASH hash);
 
 /**
- * コードがキーの命令ハッシュ表を作成する
+ * 命令の名前とタイプから、命令コードを返す
+ * 無効な場合は0xFFFFを返す
  */
-bool create_code_cmdtype();
+WORD getcmdcode(const char *cmd, CMDTYPE type);
 
 /**
  * 命令コードから命令の関数ポインタを返す
@@ -171,9 +206,4 @@ CMDTYPE getcmdtype(WORD code);
  */
 char *getcmdname(WORD code);
 
-/**
- * コードがキーの命令ハッシュ表を解放する
- */
-void free_code_cmdtype();
-
 #endif            /* YACASL2_CASL2_INCLUDEDの終端 */