X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fcasl2.c;h=cf44e6825b9496c59837ee477760f5ea0f5109ee;hb=3a3755494c8fe62e90040532927860055ba74b2e;hp=37aee61e73466254e2dc19dc66f80a8d5cce1846;hpb=00272c954ced5a20c2ea9452ac3d9b4a67dc01c1;p=YACASL2.git diff --git a/src/casl2.c b/src/casl2.c index 37aee61..cf44e68 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); /* アセンブル時のプロパティを解放 */