6 * comet2monitorコマンドのオプション
8 static struct option longopts[] = {
9 {"memorysize", required_argument, NULL, 'M'},
10 {"clocks", required_argument, NULL, 'C'},
11 {"version", no_argument, NULL, 'v' },
12 {"help", no_argument, NULL, 'h'},
19 CERR cerr_comet2monitor[] = {
20 { 401, "invalid option" },
23 void addcerrlist_comet2monitor()
25 addcerrlist(ARRAYSIZE(cerr_comet2monitor), cerr_comet2monitor);
29 * @brief comet2monitorコマンドのメイン
31 * @return 正常終了時は0、異常終了時は1
33 * @param argc コマンドライン引数の数
34 * @param *argv[] コマンドライン引数の配列
36 int main(int argc, char *argv[])
38 int memsize = DEFAULT_MEMSIZE;
39 int clocks = DEFAULT_CLOCKS;
42 const char *version = PACKAGE_VERSION;
43 const char *cmdversion = "comet2monitor: COMET II machine code monitor of YACASL2 version %s\n";
44 const char *usage = "Usage: %s [-vh] [-M <MEMORYSIZE>] [-C <CLOCKS>]\n";
50 addcerrlist_comet2monitor();
53 while((opt = getopt_long(argc, argv, "M:C:vh", longopts, NULL)) != -1) {
56 memsize = atoi(optarg);
59 clocks = atoi(optarg);
62 fprintf(stdout, cmdversion, version);
65 fprintf(stdout, usage, argv[0]);
66 goto comet2monitorfin;
68 fprintf(stderr, usage, argv[0]);
69 setcerr(212, ""); /* invalid option */
70 goto comet2monitorfin;
73 create_cmdtable(HASH_CMDTYPE);
74 reset(memsize, clocks); /* COMET II仮想マシンのリセット */
76 execmode.monitor = true;
80 free_cmdtable(HASH_CMDTYPE);
81 free_cmdtable(HASH_CODE);
85 freecerr(); /* エラーの解放 */