X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fcasl2.c;h=c40a0a77bd5b89dc087ad5b1322f41331e176fcd;hp=37aee61e73466254e2dc19dc66f80a8d5cce1846;hb=7b6d89e7273b49e335af425cbb1ecb2258bf15df;hpb=f9ad3a081e1777bb6d892af65d0e4090cb31bbfa diff --git a/src/casl2.c b/src/casl2.c index 37aee61..c40a0a7 100644 --- a/src/casl2.c +++ b/src/casl2.c @@ -65,6 +65,7 @@ void assemble(int filec, char *filev[]) create_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を作成 */ asptr = malloc_chk(sizeof(ASPTR), "asptr"); /* アセンブル時のプロパティ用の領域確保 */ + asptr->ptr = 0; /* アセンブル。ラベル表作成のため、2回行う */ for(pass = FIRST; pass <= SECOND; pass++) { for(i = 0; i < filec; i++) { @@ -74,13 +75,14 @@ void assemble(int filec, char *filev[]) } else if(pass == SECOND) { asptr->ptr = bp[i]; } - if(execmode.trace == true || execmode.dump == true || asmode.src == true || - asmode.label == true || asmode.asdetail == true) + if(execmode.trace == true || execmode.dump == true || + asmode.src == true || asmode.label == true || asmode.asdetail == true) { fprintf(stdout, "\nAssemble %s (%d)\n", filev[i], pass); } + /* ファイルをアセンブル */ if(assemblefile(filev[i], pass) == false) { - goto assemblefin; + goto asfin; } } if(pass == FIRST && asmode.label == true) { @@ -91,7 +93,7 @@ void assemble(int filec, char *filev[]) } } } -assemblefin: +asfin: freelabel(); /* ラベルハッシュ表を解放 */ free_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を解放 */ FREE(asptr); /* アセンブル時のプロパティを解放 */ @@ -102,7 +104,7 @@ assemblefin: */ int main(int argc, char *argv[]) { - int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS, opt, i, status; + int memsize = DEFAULT_MEMSIZE, clocks = DEFAULT_CLOCKS, opt, i, stat; char *af[argc]; char *objfile = NULL; const char *usage = @@ -188,7 +190,7 @@ int main(int argc, char *argv[]) } casl2fin: shutdown(); /* 仮想マシンCOMET IIのシャットダウン */ - status = (cerr->num == 0) ? 0 : -1; + stat = (cerr->num == 0) ? 0 : -1; freecerr(); /* エラーの解放 */ - return status; + return stat; }