5 * comet2monitorコマンドのオプション
7 static struct option longopts[] = {
8 {"memorysize", required_argument, NULL, 'M'},
9 {"clocks", required_argument, NULL, 'C'},
10 {"version", no_argument, NULL, 'v' },
11 {"help", no_argument, NULL, 'h'},
18 CERR cerr_comet2monitor[] = {
19 { 401, "invalid option" },
22 void addcerrlist_comet2monitor()
24 addcerrlist(ARRAYSIZE(cerr_comet2monitor), cerr_comet2monitor);
28 * @brief comet2monitorコマンドのメイン
30 * @return 正常終了時は0、異常終了時は1
32 * @param argc コマンドライン引数の数
33 * @param *argv[] コマンドライン引数の配列
35 int main(int argc, char *argv[])
37 int memsize = DEFAULT_MEMSIZE;
38 int clocks = DEFAULT_CLOCKS;
41 const char *version = PACKAGE_VERSION;
42 const char *cmdversion = "comet2monitor: COMET II machine code monitor of YACASL2 version %s\n";
43 const char *usage = "Usage: %s [-vh] [-M <MEMORYSIZE>] [-C <CLOCKS>]\n";
49 addcerrlist_comet2monitor();
52 while((opt = getopt_long(argc, argv, "M:C:vh", longopts, NULL)) != -1) {
55 memsize = atoi(optarg);
58 clocks = atoi(optarg);
61 fprintf(stdout, cmdversion, version);
64 fprintf(stdout, usage, argv[0]);
65 goto comet2monitorfin;
67 fprintf(stderr, usage, argv[0]);
68 setcerr(212, ""); /* invalid option */
69 goto comet2monitorfin;
72 create_cmdtable(HASH_CMDTYPE);
73 reset(memsize, clocks); /* COMET II仮想マシンのリセット */
75 execmode.monitor = true;
79 free_cmdtable(HASH_CMDTYPE);
80 free_cmdtable(HASH_CODE);
84 freecerr(); /* エラーの解放 */