}
/* プログラム名の設定 */
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);
}
}
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;
}
}
asfin:
- freelabel(); /* ラベルハッシュ表を解放 */
- free_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を解放 */
- FREE(asptr->prog); /* アセンブル時のプロパティを解放 */
+ freelabel(); /* ラベルハッシュ表を解放 */
+ FREE(asptr->prog); /* アセンブル時のプロパティを解放 */
FREE(asptr);
}