From: j8takagi Date: Sun, 6 Mar 2011 13:22:40 +0000 (+0900) Subject: データ構造の名前を変更 X-Git-Tag: v0.1p23 X-Git-Url: https://j8takagi.net/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a639337a9aa30a059c1695ab1701b8714fd26193;p=YACASL2.git データ構造の名前を変更 --- diff --git a/include/assemble.h b/include/assemble.h index 8ab4255..aa2b599 100644 --- a/include/assemble.h +++ b/include/assemble.h @@ -35,18 +35,15 @@ typedef struct { extern ASMODE asmode; /** - * アセンブルのプロパティ + * アセンブル時の、現在およびリテラルのアドレスと入口名 */ typedef struct { - WORD ptr; /**<現在のポインタ */ - WORD lptr; /**<リテラル(=付きの値)を格納するポインタ */ + WORD ptr; /**<現在のアドレス */ + WORD lptr; /**<リテラル(=付きの値)のアドレス */ char *prog; /**<他のプログラムで参照する入口名 */ -} ASPROP; +} ASPTR; -/** - * アセンブルのプロパティ: ptr, lptr, *prog - */ -extern ASPROP *asprop; +extern ASPTR *asptr; /** * アセンブラ命令を表す番号 @@ -82,7 +79,7 @@ typedef enum { * マクロ命令を表す配列 */ typedef struct { - MACROCMDID cmdid; /**<アセンブル命令のID */ + MACROCMDID cmdid; /**<マクロ命令のID */ int opdc_min; /**<最小オペランド数 */ int opdc_max; /**<最大オペランド数 */ char *cmd; /**<コマンド名 */ diff --git a/include/struct.h b/include/struct.h index dd69d21..f98de14 100644 --- a/include/struct.h +++ b/include/struct.h @@ -87,31 +87,31 @@ typedef enum { } CMDTYPE; /** - * 命令コード配列 + * 命令コード表の項目 */ typedef struct { - char *name; - CMDTYPE type; - WORD code; + char *name; /**<命令名 */ + CMDTYPE type; /**<命令タイプ */ + WORD code; /**<命令コード */ } CMD; /** * 命令コードのハッシュ表 */ typedef struct _CMDTAB { - struct _CMDTAB *next; - CMD *cmd; + struct _CMDTAB *next; /**<次項目へのポインタ */ + CMD *cmd; /**<命令コード表の項目 */ } CMDTAB; /** - * CASL2プログラムのプロパティ + * プログラム実行時の開始と終了のアドレス */ typedef struct { - WORD start; /**<プログラムの開始番地 */ - WORD end; /**<プログラムの終了番地 */ -} PROGPROP; + WORD start; /**<開始アドレス */ + WORD end; /**<終了アドレス */ +} EXECPTR; -extern PROGPROP *prog; +extern EXECPTR *execptr; /** * COMET II仮想マシンのリセット diff --git a/src/assemble.c b/src/assemble.c index a99c62e..d6cb4f2 100644 --- a/src/assemble.c +++ b/src/assemble.c @@ -15,7 +15,7 @@ ASMODE asmode = {false, false, false, false, false}; /** * アセンブルのプロパティ: ptr, lptr, *prog */ -ASPROP *asprop; +ASPTR *asptr; /** * アセンブルのエラー定義 @@ -101,12 +101,12 @@ WORD getgr(const char *str, bool is_x) */ WORD getliteral(const char *str, PASS pass) { - WORD adr = asprop->lptr; + WORD adr = asptr->lptr; assert(*str == '='); if(*(++str) == '\'') { /* 文字定数 */ writestr(str, true, pass); } else { - writememory(nh2word(str), (asprop->lptr)++, pass); + writememory(nh2word(str), (asptr->lptr)++, pass); } return adr; } @@ -147,10 +147,10 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass) return false; } /* プログラム名の設定 */ - asprop->prog = strdup_chk(cmdl->label, "asprop.prog"); + asptr->prog = strdup_chk(cmdl->label, "asptr.prog"); /* オペランドがある場合、実行開始番地を設定 */ if(pass == SECOND && cmdl->opd->opdc == 1) { - if((prog->start = getlabel(asprop->prog, cmdl->opd->opdv[0])) == 0xFFFF) { + if((execptr->start = getlabel(asptr->prog, cmdl->opd->opdv[0])) == 0xFFFF) { setcerr(103, cmdl->opd->opdv[0]); /* label not found */ } } @@ -159,19 +159,19 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass) case END: /* 1回目のアセンブルの場合は、リテラル領域開始番地を設定 */ if(pass == FIRST) { - asprop->lptr = asprop->ptr; + asptr->lptr = asptr->ptr; } /* 2回目のアセンブルの場合は、リテラル領域終了番地を実行終了番地として設定 */ else if(pass == SECOND) { - prog->end = asprop->lptr; + execptr->end = asptr->lptr; } /* プログラム名のクリア */ - asprop->prog = NULL; + asptr->prog = NULL; status = true; break; case DS: for(i = 0; i < atoi(cmdl->opd->opdv[0]); i++) { - writememory(0x0, (asprop->ptr)++, pass); + writememory(0x0, (asptr->ptr)++, pass); if(cerr->num > 0) { return false; } @@ -362,7 +362,7 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass) setcerr(112, cmdl->cmd); /* not command of no operand */ return false; } - if(writememory(cmd, (asprop->ptr)++, pass) == true) { + if(writememory(cmd, (asptr->ptr)++, pass) == true) { status = true; } } @@ -375,7 +375,7 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass) return false; } cmd |= (r1 << 4); - if(writememory(cmd, (asprop->ptr)++, pass) == true) { + if(writememory(cmd, (asptr->ptr)++, pass) == true) { status = true; } } @@ -386,7 +386,7 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass) return false; } cmd |= ((r1 << 4) | r2); - if(cerr->num == 0 && writememory(cmd, (asprop->ptr)++, pass) == true) { + if(cerr->num == 0 && writememory(cmd, (asptr->ptr)++, pass) == true) { status = true; } } @@ -408,9 +408,9 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass) } cmd |= x; } - adr = getadr(asprop->prog, cmdl->opd->opdv[1], pass); - writememory(cmd, (asprop->ptr)++, pass); - writememory(adr, (asprop->ptr)++, pass); + adr = getadr(asptr->prog, cmdl->opd->opdv[1], pass); + writememory(cmd, (asptr->ptr)++, pass); + writememory(adr, (asptr->ptr)++, pass); if(cerr->num == 0) { status = true; } @@ -440,10 +440,10 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass) adr = getlabel(NULL, cmdl->opd->opdv[0]); } if(cmd != 0x8000 || (pass == SECOND && adr == 0xFFFF)) { - adr = getadr(asprop->prog, cmdl->opd->opdv[0], pass); + adr = getadr(asptr->prog, cmdl->opd->opdv[0], pass); } - writememory(cmd, (asprop->ptr)++, pass); - writememory(adr, (asprop->ptr)++, pass); + writememory(cmd, (asptr->ptr)++, pass); + writememory(adr, (asptr->ptr)++, pass); if(cerr->num == 0) { status = true; } @@ -496,10 +496,10 @@ void writestr(const char *str, bool literal, PASS pass) } /*リテラルの場合はリテラル領域に書込 */ if(literal == true) { - writememory(*(p++), (asprop->lptr)++, pass); + writememory(*(p++), (asptr->lptr)++, pass); lw = true; } else { - writememory(*(p++), (asprop->ptr)++, pass); + writememory(*(p++), (asptr->ptr)++, pass); } } } @@ -516,11 +516,11 @@ void writeDC(const char *str, PASS pass) if(*str == '#' || isdigit(*str) || *str == '-') { adr = nh2word(str); } else { - if(pass == SECOND && (adr = getlabel(asprop->prog, str)) == 0xFFFF) { + if(pass == SECOND && (adr = getlabel(asptr->prog, str)) == 0xFFFF) { setcerr(103, str); /* label not found */ } } - writememory(adr, (asprop->ptr)++, pass); + writememory(adr, (asptr->ptr)++, pass); } } @@ -598,7 +598,7 @@ bool assembleline(const char *line, PASS pass) if((cmdl = linetok(line)) != NULL) { if(pass == FIRST && cmdl->label != NULL) { - if(addlabel(asprop->prog, cmdl->label, asprop->ptr) == false) { + if(addlabel(asptr->prog, cmdl->label, asptr->ptr) == false) { return false; } } @@ -676,6 +676,6 @@ void outassemble(const char *file) perror(file); exit(-1); } - fwrite(sys->memory, sizeof(WORD), prog->end, fp); + fwrite(sys->memory, sizeof(WORD), execptr->end, fp); fclose(fp); } diff --git a/src/casl2.c b/src/casl2.c index 1f18a40..14f372c 100644 --- a/src/casl2.c +++ b/src/casl2.c @@ -127,16 +127,16 @@ int main(int argc, char *argv[]) for(pass = FIRST; pass <= SECOND; pass++) { if(pass == FIRST) { create_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を作成 */ - asprop = malloc_chk(sizeof(ASPROP), "asprop"); /* アセンブル時のプロパティ用の領域確保 */ + asptr = malloc_chk(sizeof(asptr), "asptr"); /* アセンブル時のプロパティ用の領域確保 */ } for(i = optind; i < argc; i++) { /* データの格納開始位置 */ if(pass == FIRST) { - beginptr[i] = asprop->ptr; + beginptr[i] = asptr->ptr; } else if(pass == SECOND) { - asprop->ptr = beginptr[i]; + asptr->ptr = beginptr[i]; } - asprop->prog = NULL; + asptr->prog = NULL; if(execmode.trace == true || execmode.dump == true || asmode.src == true || asmode.label == true || asmode.asdetail == true) { @@ -156,8 +156,8 @@ int main(int argc, char *argv[]) } if(pass == SECOND) { freelabel(); /* ラベルハッシュ表を解放 */ - free_chk(asprop->prog, "asprop.prog"); /* プログラム名を解放 */ - free_chk(asprop, "asprop"); /* アセンブル時のプロパティを解放 */ + free_chk(asptr->prog, "asptr.prog"); /* プログラム名を解放 */ + free_chk(asptr, "asptr"); /* アセンブル時のプロパティを解放 */ free_cmdtype_code(); /* 命令の名前とタイプがキーのハッシュ表を解放 */ } } diff --git a/src/comet2.c b/src/comet2.c index 2f7696a..47f0b0b 100644 --- a/src/comet2.c +++ b/src/comet2.c @@ -75,7 +75,7 @@ int main(int argc, char *argv[]) } /* COMET II仮想マシンのリセット */ reset(memsize, clocks); - prog->start = 0; + execptr->start = 0; if(loadassemble(argv[optind]) == true) { create_code_type(); /* タイプがキーの命令ハッシュ表を作成 */ exec(); /* プログラム実行 */ diff --git a/src/exec.c b/src/exec.c index 887d9fe..4da91b7 100644 --- a/src/exec.c +++ b/src/exec.c @@ -45,9 +45,9 @@ bool loadassemble(char *file) perror(file); return false; } - prog->end = prog->start + - fread(sys->memory, sizeof(WORD), sys->memsize - prog->start, fp); - if(prog->end == sys->memsize) { + execptr->end = execptr->start + + fread(sys->memory, sizeof(WORD), sys->memsize - execptr->start, fp); + if(execptr->end == sys->memsize) { setcerr(201, file); /* Loading - full of COMET II memory */ fprintf(stderr, "Load error - %d: %s\n", cerr->num, cerr->msg); status = false; @@ -348,7 +348,7 @@ bool exec() /* フラグレジスタの初期値設定 */ sys->cpu->fr = 0x0; sys->cpu->sp = sys->memsize; - sys->cpu->pr = prog->start; + sys->cpu->pr = execptr->start; /* 機械語の実行 */ for (; ; ) { clock_begin = clock(); @@ -358,7 +358,7 @@ bool exec() setcerr(204, errpr); /* Program Register (PR) - out of COMET II memory */ } /* スタック領域を確保できない場合はエラー */ - else if(sys->cpu->sp <= prog->end) { + else if(sys->cpu->sp <= execptr->end) { sprintf(errpr, "PR:#%04X", sys->cpu->pr); setcerr(205, errpr); /* Stack Pointer (SP) - cannot allocate stack buffer */ } @@ -512,20 +512,20 @@ bool exec() } break; case 0x7000: /* PUSH */ - assert(sys->cpu->sp > prog->end && sys->cpu->sp <= sys->memsize); + assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); sys->memory[--(sys->cpu->sp)] = val; break; case 0x7100: /* POP */ - assert(sys->cpu->sp > prog->end && sys->cpu->sp <= sys->memsize); + assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); sys->cpu->gr[r_r1] = sys->memory[(sys->cpu->sp)++]; break; case 0x8000: /* CALL */ - assert(sys->cpu->sp > prog->end && sys->cpu->sp <= sys->memsize); + assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); sys->memory[--(sys->cpu->sp)] = sys->cpu->pr; sys->cpu->pr = val; break; case 0x8100: /* RET */ - assert(sys->cpu->sp > prog->end && sys->cpu->sp <= sys->memsize); + assert(sys->cpu->sp > execptr->end && sys->cpu->sp <= sys->memsize); if(sys->cpu->sp == sys->memsize) { return true; } else { diff --git a/src/struct.c b/src/struct.c index 58a3585..0662eff 100644 --- a/src/struct.c +++ b/src/struct.c @@ -2,14 +2,14 @@ #include "cmem.h" /** - * COMET IIの仮装実行マシンシステム + * COMET IIの仮想実行マシンシステム */ SYSTEM *sys; /** - * CASL IIプログラムのプロパティ + * プログラム実行時の開始と終了のアドレス */ -PROGPROP *prog; +EXECPTR *execptr; /** * COMET II仮想マシンのリセット @@ -19,20 +19,20 @@ void reset(int memsize, int clocks) int i; sys = malloc_chk(sizeof(SYSTEM), "sys"); - /* メモリサイズの設定 */ + /* メモリサイズを設定 */ sys->memsize = memsize; - /* クロック周波数の設定 */ + /* クロック周波数を設定 */ sys->clocks = clocks; - /* メモリの初期化 */ + /* メモリを初期化 */ sys->memory = calloc_chk(sys->memsize, sizeof(WORD), "memory"); - /* CPUの初期化 */ + /* CPUを初期化 */ sys->cpu = malloc_chk(sizeof(CPU), "cpu"); for(i = 0; i < GRSIZE; i++) { sys->cpu->gr[i] = 0x0; } sys->cpu->sp = sys->cpu->pr = sys->cpu->fr = 0x0; - /* CASL2プログラムのプロパティ */ - prog = malloc_chk(sizeof(PROGPROP), "prog"); + /* CASL2プログラムの開始と終了のアドレスを初期化 */ + execptr = malloc_chk(sizeof(execptr), "prog"); } /** @@ -40,7 +40,7 @@ void reset(int memsize, int clocks) */ void shutdown() { - free_chk(prog, "prog"); + free_chk(execptr, "execptr"); free_chk(sys->memory, "sys.memory"); free_chk(sys->cpu, "sys.cpu"); free_chk(sys, "sys");