YACASL2
Loading...
Searching...
No Matches
comet2monitor.c
Go to the documentation of this file.
1#define _GNU_SOURCE
2#include "package.h"
3#include "exec.h"
4#include "load.h"
5#include "monitor.h"
6
10static 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
22 { 401, "invalid option" },
23};
24
29
38int 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();
53
54 /* オプションの処理 */
55 while((opt = getopt_long(argc, argv, "M:C:vh", longopts, NULL)) != -1) {
56 switch(opt) {
57 case 'M':
58 memsize = atoi(optarg);
59 break;
60 case 'C':
61 clocks = atoi(optarg);
62 break;
63 case 'v':
64 fprintf(stdout, cmdversion, version);
65 return 0;
66 case 'h':
67 fprintf(stdout, usage, argv[0]);
68 goto comet2monitorfin;
69 case '?':
70 fprintf(stderr, usage, argv[0]);
71 setcerr(212, ""); /* invalid option */
72 goto comet2monitorfin;
73 }
74 }
75 /* 残りの引数(オプション以外の引数)があるかチェック */
76 if (optind < argc) {
77 warn_ignore_arg(argc - optind, argv + optind);
78 }
80 comet2_init(memsize, clocks); /* COMET II仮想マシンの初期化 */
81 execptr->start = 0;
82 execmode.monitor = true;
83 exec(); /* プログラム実行 */
85comet2monitorfin:
88 if(cerr->num > 0) {
89 stat = 1;
90 }
91 freecerr(); /* エラーの解放 */
92 return stat;
93}
static struct option longopts[]
casl2コマンドのオプション
Definition casl2.c:24
CERR * cerr
現在のエラー
Definition cerr.c:9
struct _CERR CERR
エラーを表すデータ型
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
#define ARRAYSIZE(array)
配列のサイズを返すマクロ
Definition cmem.h:14
int main(int argc, char *argv[])
comet2monitorコマンドのメイン
void addcerrlist_comet2monitor()
CERR cerr_comet2monitor[]
casl2のエラー定義
void exec()
COMET II仮想マシンを実行する
Definition exec.c:673
void addcerrlist_exec()
実行エラーをエラーリストに追加する
Definition exec.c:210
void addcerrlist_load()
アセンブル結果読み込みエラーをエラーリストに追加する
Definition load.c:15
void warn_ignore_arg(int argc, char *argv[])
引数が無視されることを表示する
Definition monitor.c:200
@ HASH_CMDTYPE
Definition struct.h:60
@ HASH_CODE
Definition struct.h:61
@ DEFAULT_MEMSIZE
Definition struct.h:18
@ DEFAULT_CLOCKS
Definition struct.h:19
void comet2_shutdown()
Definition struct.c:306
EXECPTR * execptr
Definition struct.c:12
bool create_cmdtable(CMDTAB_HASH hash)
命令ハッシュ表を作成する
Definition struct.c:113
void comet2_init(int memsize, int clocks)
Definition struct.c:267
void free_cmdtable(CMDTAB_HASH hash)
Definition struct.c:135
EXECMODE execmode
実行モード: trace, logical, dump, monitor, step
Definition exec.c:88
#define PACKAGE_VERSION
Definition version.h:4