X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fassemble.c;h=c9dd43b5e755129a906bdcf7ab3de4a6779d0822;hb=be496380efb4018b38076cfadb4b790fa388a1e3;hp=ecfe900920dc13d6ee315611e2f67b6718f0275e;hpb=2f0b91ab1a54973a084e1609b46a1432c8b8e334;p=YACASL2.git diff --git a/src/assemble.c b/src/assemble.c index ecfe900..c9dd43b 100644 --- a/src/assemble.c +++ b/src/assemble.c @@ -441,11 +441,9 @@ void assemble_start(const CMDLINE *cmdl, PASS pass) } /* プログラム名の設定 */ strcpy(asptr->prog, cmdl->label); - /* オペランドがある場合、実行開始アドレスを設定 */ - if(pass == SECOND && cmdl->opd->opdv[0] != NULL) { - if((execptr->start = getlabel(asptr->prog, cmdl->opd->opdv[0])) == 0xFFFF) { - setcerr(103, cmdl->opd->opdv[0]); /* label not found */ - } + /* オペランドがある場合、書き込みと実行の開始アドレスを設定 */ + if(cmdl->opd->opdv[0] != NULL) { + asptr->ptr = execptr->start = getadr(asptr->prog, cmdl->opd->opdv[0], pass); } } @@ -755,7 +753,6 @@ void assemble(int filec, char *filev[], WORD adr) PASS pass; WORD bp[filec]; - create_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を作成 */ asptr = malloc_chk(sizeof(ASPTR), "asptr"); /* アセンブル時のプロパティ用の領域確保 */ asptr->prog = malloc_chk(LABELSIZE + 1, "asptr.prog"); asptr->ptr = adr; @@ -787,9 +784,8 @@ void assemble(int filec, char *filev[], WORD adr) } } asfin: - freelabel(); /* ラベルハッシュ表を解放 */ - free_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を解放 */ - FREE(asptr->prog); /* アセンブル時のプロパティを解放 */ + freelabel(); /* ラベルハッシュ表を解放 */ + FREE(asptr->prog); /* アセンブル時のプロパティを解放 */ FREE(asptr); }