デバッガー機能の実装
[YACASL2.git] / include / debugger.h
1 #ifndef DEBBUGER_INCLUDE
2 #define DEBBUGER_INCLUDE
3
4 #include "word.h"
5
6 /**
7  * @brief デバッガー
8  */
9 enum {
10     DBARGSIZE = 2,          /**<デバッガー引数の最大数 */
11 };
12
13 /**
14  * @brief デバッガー引数を表すデータ型
15  */
16 typedef struct {
17     int argc;                   /**<オペランド数 */
18     char *argv[DBARGSIZE];      /**<オペランド配列 */
19 } DBARGS;
20
21 /**
22  * @brief デバッガー命令行を表すデータ型
23  */
24 typedef struct {
25     char *dbcmd;                  /**<コマンド */
26     DBARGS *dbargs;               /**<引数 */
27 } DBCMDLINE;
28
29 /**
30  * @brief ブレークポイント表を表すデータ型
31  */
32 typedef struct _BPSTAB {
33     struct _BPSTAB *next;        /**<リスト次項目へのポインタ */
34     WORD adr;                   /**<アドレス */
35 } BPSTAB;
36
37 /**
38  * ブレークポイント表のサイズ
39  */
40 enum {
41     BPSTABSIZE = 251,         /**<ブレークポイント表のサイズ */
42 };
43
44 enum {
45     DBINSIZE = 8    /**<デバッガーの、入力領域 */
46 };
47
48 /**
49  * @brief 文字列から、デバッガーの引数を取得する
50  *
51  * @return デバッガーの引数
52  *
53  * @param *str 文字列
54  */
55 DBARGS *dbargstok(const char *str);
56
57 /**
58  * @brief 行から、デバッガーの命令と引数を取得する
59  *
60  * @return デバッガーの命令と引数
61  *
62  * @param *line 行
63  */
64 DBCMDLINE *dblinetok(const char *line);
65
66 /**
67  * @brief ブレークポイント表にアドレスがある場合はtrue、ない場合はfalseを返す
68  *
69  * @return trueまたはfalse
70  *
71  * @param *adr アドレス
72  */
73 bool getbps(WORD adr);
74
75 /**
76  * @brief ブレークポイント表にアドレスを追加する
77  *
78  * @return 追加した場合はtrue、追加しなかった場合はfalse
79  *
80  * @param *adr アドレス
81  */
82 bool addbps(WORD adr);
83
84
85 /**
86  * @brief ブレークポイント表からアドレスを削除する
87  *
88  * @return 削除した場合はtrue、削除しなかった場合はfalse
89  *
90  * @param *adr アドレス
91  */
92 bool delbps(WORD adr);
93
94 #endif        /* end of DEBBUGER_INCLUDE */