From: j8takagi Date: Mon, 1 Feb 2010 23:51:53 +0000 (+0900) Subject: 関数a2wordの名前をnh2wordに変更 X-Git-Tag: v0.1~74^2~1 X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=commitdiff_plain;h=8a76ef9abe62fac15c40aebb64fbb8a541b78075 関数a2wordの名前をnh2wordに変更 --- diff --git a/include/word.h b/include/word.h index 30e89a7..24dea80 100644 --- a/include/word.h +++ b/include/word.h @@ -17,7 +17,7 @@ WORD n2word(const char *str); WORD h2word(const char *str); /* 10進数または16進数の文字列をWORD値に変換 */ -WORD a2word(const char *str); +WORD nh2word(const char *str); /* WORD値を10進数の文字列に変換 */ char *word2n(WORD word); diff --git a/src/assemble.c b/src/assemble.c index 963db49..3297041 100644 --- a/src/assemble.c +++ b/src/assemble.c @@ -39,7 +39,7 @@ WORD getadr(const char *prog, const char *str, PASS pass) if(*str == '=') { adr = getliteral(str, pass); } else if((*str == '#') || isdigit(*str) || *str == '-') { - adr = a2word(str); + adr = nh2word(str); } else { if(pass == SECOND && (adr = getlabel(prog, str)) == 0xFFFF) { if(prog != NULL) { @@ -79,7 +79,7 @@ WORD getliteral(const char *str, PASS pass) if(*str == '\'') { /* 文字定数 */ writestr(str, true, pass); } else { - writememory(a2word(str), lptr++, pass); + writememory(nh2word(str), lptr++, pass); } return adr; } @@ -88,8 +88,7 @@ WORD getliteral(const char *str, PASS pass) /* DC命令とリテラルで使い、リテラルの場合はリテラル領域に書込 */ void writestr(const char *str, bool literal, PASS pass) { - assert(cerrno == 0); - assert(*str == '\''); + assert(cerrno == 0 && *str == '\''); str++; while(*str != '\0') { if(*str == '\'') { @@ -115,7 +114,7 @@ void writeDC(const char *str, PASS pass) writestr(str, false, pass); } else { if(*str == '#' || isdigit(*str) || *str == '-') { - adr = a2word(str); + adr = nh2word(str); } else { if(pass == SECOND && (adr = getlabel(prog, str)) == 0xFFFF) { setcerr(103, str); /* label not found */ @@ -335,10 +334,11 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass) } cmd |= x; } - /* CALLの場合はプログラムの入口名を表すラベル、 - それ以外の場合は同一プログラム内のラベルを取得 */ - if(cmd == 0x8000) { /* CALL命令 */ - adr = getadr(NULL, cmdl->opd->opdv[0], pass); + /* CALLの場合はプログラムの入口名を表すラベルを取得 */ + /* CALL以外の命令の場合と、プログラムの入口名を取得できない場合は、 */ + /* 同一プログラム内のラベルを取得 */ + if(pass == SECOND && cmd == 0x8000) { /* CALL命令 */ + adr = getlabel(NULL, cmdl->opd->opdv[0]); } if(cmd != 0x8000 || (pass == SECOND && adr == 0xFFFF)) { adr = getadr(prog, cmdl->opd->opdv[0], pass); diff --git a/src/dumpword.c b/src/dumpword.c index f907eac..e78b108 100644 --- a/src/dumpword.c +++ b/src/dumpword.c @@ -35,7 +35,7 @@ int main(int argc, char *argv[]) exit(-1); } /* WORD値に変換 */ - word = a2word(argv[optind]); + word = nh2word(argv[optind]); if(cerrno > 0) { fprintf(stderr, "Dumpword Error - %d: %s\n", cerrno, cerrmsg); exit(-1); diff --git a/src/word.c b/src/word.c index e4b9af8..83ae9bd 100644 --- a/src/word.c +++ b/src/word.c @@ -40,7 +40,7 @@ WORD h2word(const char *str) } /* 10進数または16進数の文字列をWORD値に変換 */ -WORD a2word(const char *str) +WORD nh2word(const char *str) { WORD word; if(!isdigit(*str) && *str != '-' && *str != '#') {