This source file includes following definitions.
- addcerrlist_comet2monitor
- main
1 #include "package.h"
2 #include "exec.h"
3 #include "load.h"
4 #include "monitor.h"
5
6
7
8
9 static struct option longopts[] = {
10 {"memorysize", required_argument, NULL, 'M'},
11 {"clocks", required_argument, NULL, 'C'},
12 {"version", no_argument, NULL, 'v' },
13 {"help", no_argument, NULL, 'h'},
14 {0, 0, 0, 0},
15 };
16
17
18
19
20 CERR cerr_comet2monitor[] = {
21 { 401, "invalid option" },
22 };
23
24 void addcerrlist_comet2monitor()
25 {
26 addcerrlist(ARRAYSIZE(cerr_comet2monitor), cerr_comet2monitor);
27 }
28
29
30
31
32
33
34
35
36
37 int main(int argc, char *argv[])
38 {
39 int memsize = DEFAULT_MEMSIZE;
40 int clocks = DEFAULT_CLOCKS;
41 int opt = 0;
42 int stat = 0;
43 const char *version = PACKAGE_VERSION;
44 const char *cmdversion = "comet2monitor: COMET II machine code monitor of YACASL2 version %s\n";
45 const char *usage = "Usage: %s [-vh] [-M <MEMORYSIZE>] [-C <CLOCKS>]\n";
46
47
48 cerr_init();
49 addcerrlist_load();
50 addcerrlist_exec();
51 addcerrlist_comet2monitor();
52
53
54 while((opt = getopt_long(argc, argv, "M:C:vh", longopts, NULL)) != -1) {
55 switch(opt) {
56 case 'M':
57 memsize = atoi(optarg);
58 break;
59 case 'C':
60 clocks = atoi(optarg);
61 break;
62 case 'v':
63 fprintf(stdout, cmdversion, version);
64 return 0;
65 case 'h':
66 fprintf(stdout, usage, argv[0]);
67 goto comet2monitorfin;
68 case '?':
69 fprintf(stderr, usage, argv[0]);
70 setcerr(212, "");
71 goto comet2monitorfin;
72 }
73 }
74
75 if (optind < argc) {
76 warn_ignore_arg(argc - optind, argv + optind);
77 }
78 create_cmdtable(HASH_CMDTYPE);
79 reset(memsize, clocks);
80 execptr->start = 0;
81 execmode.monitor = true;
82 exec();
83 shutdown();
84 comet2monitorfin:
85 free_cmdtable(HASH_CMDTYPE);
86 free_cmdtable(HASH_CODE);
87 if(cerr->num > 0) {
88 stat = 1;
89 }
90 freecerr();
91 return stat;
92 }