YACASL2
comet2monitor.c
Go to the documentation of this file.
1 #include "package.h"
2 #include "exec.h"
3 #include "load.h"
4 
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'},
13  {0, 0, 0, 0},
14 };
15 
20  { 401, "invalid option" },
21 };
22 
24 {
26 }
27 
36 int main(int argc, char *argv[])
37 {
38  int memsize = DEFAULT_MEMSIZE;
39  int clocks = DEFAULT_CLOCKS;
40  int opt = 0;
41  int stat = 0;
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";
45 
46  /* エラーの定義 */
47  cerr_init();
51 
52  /* オプションの処理 */
53  while((opt = getopt_long(argc, argv, "M:C:vh", longopts, NULL)) != -1) {
54  switch(opt) {
55  case 'M':
56  memsize = atoi(optarg);
57  break;
58  case 'C':
59  clocks = atoi(optarg);
60  break;
61  case 'v':
62  fprintf(stdout, cmdversion, version);
63  return 0;
64  case 'h':
65  fprintf(stdout, usage, argv[0]);
66  goto comet2monitorfin;
67  case '?':
68  fprintf(stderr, usage, argv[0]);
69  setcerr(212, ""); /* invalid option */
70  goto comet2monitorfin;
71  }
72  }
74  reset(memsize, clocks); /* COMET II仮想マシンのリセット */
75  execptr->start = 0;
76  execmode.monitor = true;
77  exec(); /* プログラム実行 */
78  shutdown();
79 comet2monitorfin:
82  if(cerr->num > 0) {
83  stat = 1;
84  }
85  freecerr(); /* エラーの解放 */
86  return stat;
87 }
CERR * cerr
現在のエラー
Definition: cerr.c:9
void addcerrlist(int cerrc, CERR cerrv[])
エラーリストを作成・追加する
Definition: cerr.c:13
void freecerr()
エラーリストと現在のエラーを解放する
Definition: cerr.c:72
void cerr_init()
エラーを初期化する
Definition: cerr.c:3
void setcerr(int num, const char *str)
現在のエラーを設定する
Definition: cerr.c:45
void exec()
COMET II仮想マシンを実行する
#define ARRAYSIZE(array)
配列のサイズを返すマクロ
Definition: cmem.h:14
int main(int argc, char *argv[])
comet2monitorコマンドのメイン
Definition: comet2monitor.c:36
void addcerrlist_comet2monitor()
Definition: comet2monitor.c:23
CERR cerr_comet2monitor[]
casl2のエラー定義
Definition: comet2monitor.c:19
static struct option longopts[]
Definition: comet2monitor.c:8
void addcerrlist_exec()
実行エラーをエラーリストに追加する
Definition: exec.c:213
void addcerrlist_load()
アセンブル結果読み込みエラーをエラーリストに追加する
Definition: load.c:22
@ DEFAULT_MEMSIZE
Definition: struct.h:19
@ DEFAULT_CLOCKS
Definition: struct.h:20
@ HASH_CMDTYPE
Definition: struct.h:61
@ HASH_CODE
Definition: struct.h:62
void reset(int memsize, int clocks)
Definition: struct.c:253
EXECPTR * execptr
Definition: struct.c:12
bool create_cmdtable(CMDTAB_HASH hash)
命令ハッシュ表を作成する
Definition: struct.c:113
void shutdown()
Definition: struct.c:278
void free_cmdtable(CMDTAB_HASH hash)
Definition: struct.c:135
EXECMODE execmode
実行モード: trace, logical, dump, monitor, step
Definition: exec.c:91
エラーを表すデータ型
Definition: cerr.h:15
int num
Definition: cerr.h:16
bool monitor
Definition: struct.h:147
WORD start
Definition: struct.h:131
#define PACKAGE_VERSION
Definition: version.h:4