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, clocks = DEFAULT_CLOCKS;
39 const char *version = PACKAGE_VERSION, *cmdversion = "comet2monitor: COMET II machine code monitor of YACASL2 version %s\n";
40 const char *usage = "Usage: %s [-vh] [-M <MEMORYSIZE>] [-C <CLOCKS>]\n";
46 addcerrlist_comet2monitor();
49 while((opt = getopt_long(argc, argv, "M:C:vh", longopts, NULL)) != -1) {
52 memsize = atoi(optarg);
55 clocks = atoi(optarg);
58 fprintf(stdout, cmdversion, version);
61 fprintf(stdout, usage, argv[0]);
62 goto comet2monitorfin;
64 fprintf(stderr, usage, argv[0]);
65 setcerr(212, ""); /* invalid option */
66 goto comet2monitorfin;
69 create_cmdtable(HASH_CMDTYPE);
70 reset(memsize, clocks); /* COMET II仮想マシンのリセット */
72 execmode.monitor = true;
76 free_cmdtable(HASH_CMDTYPE);
77 free_cmdtable(HASH_CODE);
81 freecerr(); /* エラーの解放 */