From 48cd73625a74e70b01258b7bb13538b1bc1fba42 Mon Sep 17 00:00:00 2001 From: j8takagi Date: Thu, 18 Jun 2026 19:29:23 +0900 Subject: [PATCH] =?utf8?q?comet2monitor=E3=81=AB=E3=80=81t/T/d=E3=82=AA?= =?utf8?q?=E3=83=97=E3=82=B7=E3=83=A7=E3=83=B3=E3=81=A81=E3=81=A4=E3=81=AE?= =?utf8?q?=E3=83=95=E3=82=A1=E3=82=A4=E3=83=AB=E3=82=92=E6=8C=87=E5=AE=9A?= =?utf8?q?=E3=81=A7=E3=81=8D=E3=82=8B=E3=82=88=E3=81=86=E4=BB=95=E6=A7=98?= =?utf8?q?=E5=A4=89=E6=9B=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- src/comet2monitor.c | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/src/comet2monitor.c b/src/comet2monitor.c index 0b9a53e..1ce2398 100644 --- a/src/comet2monitor.c +++ b/src/comet2monitor.c @@ -8,6 +8,10 @@ * comet2monitorコマンドのオプション */ static struct option longopts[] = { + {"trace", no_argument, NULL, 't'}, + {"tracearithmetic", no_argument, NULL, 't'}, + {"tracelogical", no_argument, NULL, 'T'}, + {"dump", no_argument, NULL, 'd'}, {"memorysize", required_argument, NULL, 'M'}, {"clocks", required_argument, NULL, 'C'}, {"version", no_argument, NULL, 'v' }, @@ -43,7 +47,7 @@ int main(int argc, char *argv[]) int stat = 0; const char *version = PACKAGE_VERSION; const char *cmdversion = "comet2monitor: COMET II machine code monitor of YACASL2 version %s\n"; - const char *usage = "Usage: %s [-vh] [-M ] [-C ]\n"; + const char *usage = "Usage: %s [-tTdvh] [-M ] [-C ] FILE\n"; /* エラーの定義 */ cerr_init(); @@ -52,8 +56,18 @@ int main(int argc, char *argv[]) addcerrlist_comet2monitor(); /* オプションの処理 */ - while((opt = getopt_long(argc, argv, "M:C:vh", longopts, NULL)) != -1) { + while((opt = getopt_long(argc, argv, "tTdM:C:vh", longopts, NULL)) != -1) { switch(opt) { + case 't': + execmode.trace = true; + break; + case 'T': + execmode.trace = true; + execmode.logical = true; + break; + case 'd': + execmode.dump = true; + break; case 'M': if((memsize = memsize_str2word(optarg)) == 0) { goto comet2monitorfin; @@ -76,13 +90,16 @@ int main(int argc, char *argv[]) goto comet2monitorfin; } } + create_cmdtable(HASH_CMDTYPE); + comet2_init(memsize, clocks); /* COMET II仮想マシンの初期化 */ + execptr->start = 0; + if(argv[optind] != NULL) { + execptr->end = loadassemble(argv[optind++], execptr->start); + } /* 残りの引数(オプション以外の引数)があるかチェック */ if (optind < argc) { warn_ignore_arg(argc - optind, argv + optind); } - create_cmdtable(HASH_CMDTYPE); - comet2_init(memsize, clocks); /* COMET II仮想マシンの初期化 */ - execptr->start = 0; execmode.monitor = true; exec(); /* プログラム実行 */ comet2_shutdown(); -- 2.47.3