データ構造の名前を変更 v0.1p23
authorj8takagi <j8takagi@nifty.com>
Sun, 6 Mar 2011 13:22:40 +0000 (22:22 +0900)
committerj8takagi <j8takagi@nifty.com>
Sun, 6 Mar 2011 13:22:40 +0000 (22:22 +0900)
include/assemble.h
include/struct.h
src/assemble.c
src/casl2.c
src/comet2.c
src/exec.c
src/struct.c

index 8ab4255..aa2b599 100644 (file)
@@ -35,18 +35,15 @@ typedef struct {
 extern ASMODE asmode;
 
 /**
 extern ASMODE asmode;
 
 /**
- * アセンブルのプロパティ
+ * アセンブル時の、現在およびリテラルのアドレスと入口名
  */
 typedef struct {
  */
 typedef struct {
-    WORD ptr;     /**<ç\8f¾å\9c¨ã\81®ã\83\9dã\82¤ã\83³ã\82¿ */
-    WORD lptr;    /**<ã\83ªã\83\86ã\83©ã\83«ï¼\88=ä»\98ã\81\8dã\81®å\80¤ï¼\89ã\82\92æ ¼ç´\8dã\81\99ã\82\8bã\83\9dã\82¤ã\83³ã\82¿ */
+    WORD ptr;     /**<ç\8f¾å\9c¨ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ */
+    WORD lptr;    /**<ã\83ªã\83\86ã\83©ã\83«ï¼\88=ä»\98ã\81\8dã\81®å\80¤ï¼\89ã\81®ã\82¢ã\83\89ã\83¬ã\82¹ */
     char *prog;   /**<他のプログラムで参照する入口名 */
     char *prog;   /**<他のプログラムで参照する入口名 */
-} ASPROP;
+} ASPTR;
 
 
-/**
- * アセンブルのプロパティ: ptr, lptr, *prog
- */
-extern ASPROP *asprop;
+extern ASPTR *asptr;
 
 /**
   * アセンブラ命令を表す番号
 
 /**
   * アセンブラ命令を表す番号
@@ -82,7 +79,7 @@ typedef enum {
  * マクロ命令を表す配列
  */
 typedef struct {
  * マクロ命令を表す配列
  */
 typedef struct {
-    MACROCMDID cmdid;              /**<ã\82¢ã\82»ã\83³ã\83\96ã\83«命令のID */
+    MACROCMDID cmdid;              /**<ã\83\9eã\82¯ã\83­命令のID */
     int opdc_min;                  /**<最小オペランド数 */
     int opdc_max;                  /**<最大オペランド数 */
     char *cmd;                     /**<コマンド名 */
     int opdc_min;                  /**<最小オペランド数 */
     int opdc_max;                  /**<最大オペランド数 */
     char *cmd;                     /**<コマンド名 */
index dd69d21..f98de14 100644 (file)
@@ -87,31 +87,31 @@ typedef enum {
 } CMDTYPE;
 
 /**
 } CMDTYPE;
 
 /**
- * 命令コード配列
+ * 命令コード表の項目
  */
 typedef struct {
  */
 typedef struct {
-    char *name;
-    CMDTYPE type;
-    WORD code;
+    char *name;                 /**<命令名 */
+    CMDTYPE type;               /**<命令タイプ */
+    WORD code;                  /**<命令コード */
 } CMD;
 
 /**
  * 命令コードのハッシュ表
  */
 typedef struct _CMDTAB {
 } CMD;
 
 /**
  * 命令コードのハッシュ表
  */
 typedef struct _CMDTAB {
-    struct _CMDTAB *next;
-    CMD *cmd;
+    struct _CMDTAB *next;       /**<次項目へのポインタ */
+    CMD *cmd;                   /**<命令コード表の項目 */
 } CMDTAB;
 
 /**
 } CMDTAB;
 
 /**
- * CASL2プログラムのプロパティ
+ * プログラム実行時の開始と終了のアドレス
  */
 typedef struct {
  */
 typedef struct {
-    WORD start;   /**<プログラムの開始番地 */
-    WORD end;     /**<プログラムの終了番地 */
-} PROGPROP;
+    WORD start;   /**<開始アドレス */
+    WORD end;     /**<終了アドレス */
+} EXECPTR;
 
 
-extern PROGPROP *prog;
+extern EXECPTR *execptr;
 
 /**
  * COMET II仮想マシンのリセット
 
 /**
  * COMET II仮想マシンのリセット
index a99c62e..d6cb4f2 100644 (file)
@@ -15,7 +15,7 @@ ASMODE asmode = {false, false, false, false, false};
 /**
  * アセンブルのプロパティ: ptr, lptr, *prog
  */
 /**
  * アセンブルのプロパティ: 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 getliteral(const char *str, PASS pass)
 {
-    WORD adr = asprop->lptr;
+    WORD adr = asptr->lptr;
     assert(*str == '=');
     if(*(++str) == '\'') {    /* 文字定数 */
         writestr(str, true, pass);
     } else {
     assert(*str == '=');
     if(*(++str) == '\'') {    /* 文字定数 */
         writestr(str, true, pass);
     } else {
-        writememory(nh2word(str), (asprop->lptr)++, pass);
+        writememory(nh2word(str), (asptr->lptr)++, pass);
     }
     return adr;
 }
     }
     return adr;
 }
@@ -147,10 +147,10 @@ bool assemblecmd(const CMDLINE *cmdl, PASS pass)
             return false;
         }
         /* プログラム名の設定 */
             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(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 */
             }
         }
                 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) {
     case END:
         /* 1回目のアセンブルの場合は、リテラル領域開始番地を設定 */
         if(pass == FIRST) {
-            asprop->lptr = asprop->ptr;
+            asptr->lptr = asptr->ptr;
         }
         /* 2回目のアセンブルの場合は、リテラル領域終了番地を実行終了番地として設定 */
         else if(pass == SECOND) {
         }
         /* 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++) {
         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;
             }
             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;
         }
             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;
         }
     }
             status = true;
         }
     }
@@ -375,7 +375,7 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass)
                 return false;
             }
             cmd |= (r1 << 4);
                 return false;
             }
             cmd |= (r1 << 4);
-            if(writememory(cmd, (asprop->ptr)++, pass) == true) {
+            if(writememory(cmd, (asptr->ptr)++, pass) == true) {
                 status = true;
             }
         }
                 status = true;
             }
         }
@@ -386,7 +386,7 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass)
                 return false;
             }
             cmd |= ((r1 << 4) | r2);
                 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;
             }
         }
                 status = true;
             }
         }
@@ -408,9 +408,9 @@ bool cometcmd(const CMDLINE *cmdl, PASS pass)
                 }
                 cmd |= x;
             }
                 }
                 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;
             }
             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 = 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;
         }
         if(cerr->num == 0) {
             status = true;
         }
@@ -496,10 +496,10 @@ void writestr(const char *str, bool literal, PASS pass)
         }
         /*リテラルの場合はリテラル領域に書込 */
         if(literal == true) {
         }
         /*リテラルの場合はリテラル領域に書込 */
         if(literal == true) {
-            writememory(*(p++), (asprop->lptr)++, pass);
+            writememory(*(p++), (asptr->lptr)++, pass);
             lw = true;
         } else {
             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(*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 */
             }
         }
                 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((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;
             }
         }
                 return false;
             }
         }
@@ -676,6 +676,6 @@ void outassemble(const char *file)
         perror(file);
         exit(-1);
     }
         perror(file);
         exit(-1);
     }
-    fwrite(sys->memory, sizeof(WORD), prog->end, fp);
+    fwrite(sys->memory, sizeof(WORD), execptr->end, fp);
     fclose(fp);
 }
     fclose(fp);
 }
index 1f18a40..14f372c 100644 (file)
@@ -127,16 +127,16 @@ int main(int argc, char *argv[])
     for(pass = FIRST; pass <= SECOND; pass++) {
         if(pass == FIRST) {
             create_cmdtype_code();        /* 命令の名前とタイプがキーのハッシュ表を作成 */
     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) {
         }
         for(i = optind; i < argc; i++) {
             /* データの格納開始位置 */
             if(pass == FIRST) {
-                beginptr[i] = asprop->ptr;
+                beginptr[i] = asptr->ptr;
             } else if(pass == SECOND) {
             } 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)
             {
             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();            /* ラベルハッシュ表を解放 */
         }
         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();    /* 命令の名前とタイプがキーのハッシュ表を解放 */
         }
     }
             free_cmdtype_code();    /* 命令の名前とタイプがキーのハッシュ表を解放 */
         }
     }
index 2f7696a..47f0b0b 100644 (file)
@@ -75,7 +75,7 @@ int main(int argc, char *argv[])
     }
     /* COMET II仮想マシンのリセット */
     reset(memsize, clocks);
     }
     /* COMET II仮想マシンのリセット */
     reset(memsize, clocks);
-    prog->start = 0;
+    execptr->start = 0;
     if(loadassemble(argv[optind]) == true) {
         create_code_type();    /* タイプがキーの命令ハッシュ表を作成 */
         exec();                /* プログラム実行 */
     if(loadassemble(argv[optind]) == true) {
         create_code_type();    /* タイプがキーの命令ハッシュ表を作成 */
         exec();                /* プログラム実行 */
index 887d9fe..4da91b7 100644 (file)
@@ -45,9 +45,9 @@ bool loadassemble(char *file)
         perror(file);
         return false;
     }
         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;
         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->fr = 0x0;
     sys->cpu->sp = sys->memsize;
-    sys->cpu->pr = prog->start;
+    sys->cpu->pr = execptr->start;
     /* 機械語の実行 */
     for (; ; ) {
         clock_begin = clock();
     /* 機械語の実行 */
     for (; ; ) {
         clock_begin = clock();
@@ -358,7 +358,7 @@ bool exec()
             setcerr(204, errpr);    /* Program Register (PR) - out of COMET II memory */
         }
         /* スタック領域を確保できない場合はエラー */
             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 */
         }
             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 */
             }
             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 */
             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 */
             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 */
             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 {
             if(sys->cpu->sp == sys->memsize) {
                 return true;
             } else {
index 58a3585..0662eff 100644 (file)
@@ -2,14 +2,14 @@
 #include "cmem.h"
 
 /**
 #include "cmem.h"
 
 /**
- * COMET IIの仮実行マシンシステム
+ * COMET IIの仮実行マシンシステム
  */
 SYSTEM *sys;
 
 /**
  */
 SYSTEM *sys;
 
 /**
- * CASL IIプログラムのプロパティ
+ * プログラム実行時の開始と終了のアドレス
  */
  */
-PROGPROP *prog;
+EXECPTR *execptr;
 
 /**
  * COMET II仮想マシンのリセット
 
 /**
  * COMET II仮想マシンのリセット
@@ -19,20 +19,20 @@ void reset(int memsize, int clocks)
     int i;
 
     sys = malloc_chk(sizeof(SYSTEM), "sys");
     int i;
 
     sys = malloc_chk(sizeof(SYSTEM), "sys");
-    /* ã\83¡ã\83¢ã\83ªã\82µã\82¤ã\82ºã\81®設定 */
+    /* ã\83¡ã\83¢ã\83ªã\82µã\82¤ã\82ºã\82\92設定 */
     sys->memsize = memsize;
     sys->memsize = memsize;
-    /* ã\82¯ã\83­ã\83\83ã\82¯å\91¨æ³¢æ\95°ã\81®設定 */
+    /* ã\82¯ã\83­ã\83\83ã\82¯å\91¨æ³¢æ\95°ã\82\92設定 */
     sys->clocks = clocks;
     sys->clocks = clocks;
-    /* ã\83¡ã\83¢ã\83ªã\81®初期化 */
+    /* ã\83¡ã\83¢ã\83ªã\82\92初期化 */
     sys->memory = calloc_chk(sys->memsize, sizeof(WORD), "memory");
     sys->memory = calloc_chk(sys->memsize, sizeof(WORD), "memory");
-    /* CPUã\81®初期化 */
+    /* CPUã\82\92初期化 */
     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;
     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()
 {
  */
 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");
     free_chk(sys->memory, "sys.memory");
     free_chk(sys->cpu, "sys.cpu");
     free_chk(sys, "sys");