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