-#ifndef DEBBUGER_INCLUDE
-#define DEBBUGER_INCLUDE
+#ifndef MONITOR_INCLUDE
+#define MONITOR_INCLUDE
#include <stdio.h>
#include <string.h>
#include "word.h"
/**
- * @brief ã\83\87ã\83\90ã\83\83ã\82¬ー
+ * @brief ã\83¢ã\83\8bã\82¿ー
*/
enum {
- DBARGSIZE = 3, /**<デバッガー引数の最大数 */
+ MONARGSIZE = 3, /**<モニター引数の最大数 */
};
/**
- * @brief ã\83\87ã\83\90ã\83\83ã\82¬ー引数を表すデータ型
+ * @brief ã\83¢ã\83\8bã\82¿ー引数を表すデータ型
*/
typedef struct {
int argc; /**<オペランド数 */
- char *argv[DBARGSIZE]; /**<オペランド配列 */
-} DBARGS;
+ char *argv[MONARGSIZE]; /**<オペランド配列 */
+} MONARGS;
/**
- * @brief ã\83\87ã\83\90ã\83\83ã\82¬ー命令行を表すデータ型
+ * @brief ã\83¢ã\83\8bã\82¿ー命令行を表すデータ型
*/
typedef struct {
char *cmd; /**<コマンド */
- DBARGS *args; /**<引数 */
-} DBCMDLINE;
+ MONARGS *args; /**<引数 */
+} MONCMDLINE;
/**
* @brief ブレークポイント表を表すデータ型
};
enum {
- DBINSIZE = 40 /**<デバッガーの、入力領域 */
+ MONINSIZE = 40 /**<モニターの、入力領域 */
};
/**
unsigned adrhash(WORD adr);
/**
- * @brief æ\96\87å\97å\88\97ã\81\8bã\82\89ã\80\81ã\83\87ã\83\90ã\83\83ã\82¬ーの引数を取得する
+ * @brief æ\96\87å\97å\88\97ã\81\8bã\82\89ã\80\81ã\83¢ã\83\8bã\82¿ーの引数を取得する
*
- * @return ã\83\87ã\83\90ã\83\83ã\82¬ーの引数
+ * @return ã\83¢ã\83\8bã\82¿ーの引数
*
* @param *str 文字列
*/
-DBARGS *dbargstok(const char *str);
+MONARGS *monargstok(const char *str);
/**
- * @brief è¡\8cã\81\8bã\82\89ã\80\81ã\83\87ã\83\90ã\83\83ã\82¬ーの命令と引数を取得する
+ * @brief è¡\8cã\81\8bã\82\89ã\80\81ã\83¢ã\83\8bã\82¿ーの命令と引数を取得する
*
- * @return ã\83\87ã\83\90ã\83\83ã\82¬ーの命令と引数
+ * @return ã\83¢ã\83\8bã\82¿ーの命令と引数
*
* @param *line 行
*/
-DBCMDLINE *dblinetok(const char *line);
+MONCMDLINE *monlinetok(const char *line);
/**
* @brief ブレークポイント表にアドレスがある場合はtrue、ない場合はfalseを返す
bool delbps(WORD adr);
/**
- * @brief ã\83\96ã\83¬ã\83¼ã\82¯ã\83\9dã\82¤ã\83³ã\83\88表ã\81\8bã\82\89ã\81\99ã\81¹ã\81¦ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ã\82\92å\89\8aé\99¤する
+ * @brief ã\83\96ã\83¬ã\83¼ã\82¯ã\83\9dã\82¤ã\83³ã\83\88表ã\82\92解æ\94¾する
*
* @return なし
- *
- * @param なし
- */
-void resetbps();
-
-/**
- * @brief ブレークポイント表を開放する
- *
- * @return なし
- *
- * @param なし
*/
void freebps();
-#endif /* end of DEBBUGER_INCLUDE */
+#endif /* end of MONITOR_INCLUDE */
-#include "debugger.h"
+#include "monitor.h"
/**
* @brief ブレークポイント表
}
}
-DBARGS *dbargstok(const char *str)
+MONARGS *monargstok(const char *str)
{
- DBARGS *args = malloc_chk(sizeof(DBARGS), "args");
+ MONARGS *args = malloc_chk(sizeof(MONARGS), "args");
char *p, *q, *r, *sepp; /* pは文字列全体の先頭位置、qはトークンの先頭位置、rは文字の位置 */
int sepc = ' ';
return args;
}
-DBCMDLINE *dblinetok(const char *line)
+MONCMDLINE *monlinetok(const char *line)
{
char *tokens, *p;
long l;
- DBCMDLINE *dbcmdl = NULL;
+ MONCMDLINE *moncmdl = NULL;
if(*line == '\n' || *line == '\0') {
return NULL;
}
p = tokens = strdup_chk(line, "tokens");
- dbcmdl = malloc_chk(sizeof(DBCMDLINE), "dbcmdl");
+ moncmdl = malloc_chk(sizeof(MONCMDLINE), "moncmdl");
/* コマンドの取得 */
- dbcmdl->cmd = malloc_chk((l = strcspn(p, " \t\n")) + 1, "dbcmdl.cmd");
- strncpy(dbcmdl->cmd, p, l);
+ moncmdl->cmd = malloc_chk((l = strcspn(p, " \t\n")) + 1, "moncmdl.cmd");
+ strncpy(moncmdl->cmd, p, l);
/* コマンドと引数の間の空白をスキップ */
p += l;
while(*p == ' ' || *p == '\t') {
}
/* 引数として、改行までの文字列を取得 */
if((l = strcspn(p, "\n")) > 0) {
- dbcmdl->args = dbargstok(p);
+ moncmdl->args = monargstok(p);
} else {
- dbcmdl->args = malloc_chk(sizeof(DBARGS), "dbcmdl.args");
- dbcmdl->args->argc = 0;
+ moncmdl->args = malloc_chk(sizeof(MONARGS), "moncmdl.args");
+ moncmdl->args->argc = 0;
}
FREE(tokens);
- return dbcmdl;
+ return moncmdl;
}
bool stracmp(char *str1, int str2c, char *str2v[])
return false;
}
-void db_break(int argc, char *argv[])
+void mon_break(int argc, char *argv[])
{
WORD w;
if(stracmp(argv[0], 2, (char* []){"l", "list"})) {
}
}
-bool debuggercmd(char *cmd, DBARGS *args)
+bool monitorcmd(char *cmd, MONARGS *args)
{
bool next = false;
if(stracmp(cmd, 2, (char* []){"s", "step"})) {
execmode.step = true;
next = true;
} else if(stracmp(cmd, 2, (char* []){"b", "break"})) {
- db_break(args->argc, args->argv);
+ mon_break(args->argc, args->argv);
} else if(stracmp(cmd, 2, (char* []){"c", "continue"})) {
execmode.step = false;
next = true;
return next;
}
-void free_dbcmdline(DBCMDLINE *dbcmdl)
+void free_moncmdline(MONCMDLINE *moncmdl)
{
int i;
- assert(dbcmdl != NULL);
- if(dbcmdl->args != NULL) {
- for(i = 0; i < dbcmdl->args->argc; i++) {
- FREE(dbcmdl->args->argv[i]);
+ assert(moncmdl != NULL);
+ if(moncmdl->args != NULL) {
+ for(i = 0; i < moncmdl->args->argc; i++) {
+ FREE(moncmdl->args->argv[i]);
}
- FREE(dbcmdl->args);
+ FREE(moncmdl->args);
}
- if(dbcmdl->cmd != NULL) {
- FREE(dbcmdl->cmd);
+ if(moncmdl->cmd != NULL) {
+ FREE(moncmdl->cmd);
}
- if(dbcmdl != NULL) {
- FREE(dbcmdl);
+ if(moncmdl != NULL) {
+ FREE(moncmdl);
}
}
-void debugger()
+void monitor()
{
char *buf, *p;
- DBCMDLINE *dbcmdl;
+ MONCMDLINE *moncmdl;
bool next = false;
do {
fprintf(stdout, "COMET II (Type ? for help) > ");
- buf = malloc_chk(DBINSIZE + 1, "debugger.buf");
- fgets(buf, DBINSIZE, stdin);
+ buf = malloc_chk(MONINSIZE + 1, "monitor.buf");
+ fgets(buf, MONINSIZE, stdin);
if((p = strchr(buf, '\n')) != NULL) {
*p = '\0';
}
- if((dbcmdl = dblinetok(buf)) != NULL) {
- next = debuggercmd(dbcmdl->cmd, dbcmdl->args);
- free_dbcmdline(dbcmdl);
+ if((moncmdl = monlinetok(buf)) != NULL) {
+ next = monitorcmd(moncmdl->cmd, moncmdl->args);
+ free_moncmdline(moncmdl);
}
FREE(buf);
} while(next == false);