]> j8takagi.net Git Repository - YACASL2.git/commitdiff
shutdown関数の追加
authorj8takagi <j8takagi@nifty.com>
Sat, 13 Mar 2010 16:20:30 +0000 (01:20 +0900)
committerj8takagi <j8takagi@nifty.com>
Sat, 13 Mar 2010 16:20:30 +0000 (01:20 +0900)
include/casl2.h
src/casl2.c
src/comet2.c
src/struct.c

index 5d21418d6b5bd1534dc415245f57f9266f86ad2b..038f3dd8a70bf2d5538c04c0f2ba8aab89beb93e 100644 (file)
@@ -101,6 +101,9 @@ extern int cmdtabsize;
 /* COMET II仮想マシンのリセット */
 void reset();
 
+/* COMET II仮想マシンのシャットダウン */
+void shutdown();
+
 /* 命令と命令タイプがキーのハッシュ表を作成する */
 bool create_cmdtype_code();
 
index 989bbe76661ab2fabf27f13fdbeb706e3b2a4c90..d47abcd6375a80b1ba2a958c6ab75167e888979f 100644 (file)
@@ -121,6 +121,7 @@ int main(int argc, char *argv[])
     /* ソースファイルが指定されていない場合は終了 */
     if(argv[optind] == NULL) {
         setcerr(126, NULL);    /* source file is not specified */
+        fprintf(stderr, "CASL2 error - %d: %s\n", cerrno, cerrmsg);
         goto casl2err;
     }
     /* COMET II仮想マシンのリセット */
@@ -143,7 +144,7 @@ int main(int argc, char *argv[])
                 fprintf(stdout, "\nAssemble %s (%d)\n", argv[i], pass);
             }
             if((status = assemble(argv[i], pass)) == false) {
-                exit(-1);
+                goto casl2err;
             }
         }
         if(pass == FIRST && asmode.label == true) {
@@ -164,12 +165,12 @@ int main(int argc, char *argv[])
             exec();    /* プログラム実行 */
         }
     }
+    shutdown();
     if(cerrno > 0) {
-        freecerr();
-        exit(-1);
+        goto casl2err;
     }
     return 0;
 casl2err:
-    fprintf(stderr, "CASL2 error - %d: %s\n", cerrno, cerrmsg);
+    freecerr();
     exit(-1);
 }
index bb07c5f0946bbc13a15e32421ebea31ae4a2f955..a7fb3f59ec18fe7fd10a88eaeb7c1620868670b9 100644 (file)
@@ -86,6 +86,7 @@ int main(int argc, char *argv[])
     if(loadassemble(argv[optind]) == true) {
         exec();    /* プログラム実行 */
     }
+    shutdown();
     if(cerrno > 0) {
         goto comet2err;
     }
index f21c92e099a3b8ec00424c07d4fd6d7709d82e5d..7c3e785800b5cf291b8c17bc0543ef1741bb73d5 100644 (file)
@@ -31,3 +31,9 @@ void reset()
         memory[i] = 0x0;
     }
 }
+
+/* COMET II仮想マシンのシャットダウン */
+void shutdown()
+{
+    free(memory);
+}