]> j8takagi.net git repositories - yacasl2.git/commitdiff
disassemble.cの修正
authorj8takagi <j8takagi@nifty.com>
Thu, 2 Jul 2026 07:49:41 +0000 (16:49 +0900)
committerj8takagi <j8takagi@nifty.com>
Thu, 2 Jul 2026 07:49:41 +0000 (16:49 +0900)
as/sample/outl.casl
as/sample/outl.o
src/disassemble.c
test/system/casl2rev/outl/0.txt
test/system/casl2rev/sum_10/0.txt
test/system/comet2monitor/opt_r/0.txt

index f989012cb56f3ee1a0815b81a708183b5ca33d50..1e8ada6cc4871115edecc40dd062bcd89368d4c0 100644 (file)
@@ -30,8 +30,8 @@ PRT     ST      GR4,LEN         ; LEN <- GR4
         OUT     STR,LEN         ; 文字列を出力
         RPOP
         RET
-STR     DS      17              ; 符号付き2進数で表記した場合を想定し、17けた分のメモリを確保
 LEN     DS      1
+STR     DS      17              ; 符号付き2進数で表記した場合を想定し、17けた分のメモリを確保
 NCHAR   DC      '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'
         END
 ;;; 0〜65535の範囲にある正数の割算(筆算方式)を行う
index c5f8c55d14e34c4ca2224344d9f18e897ad11141..d4d8e8c597bd250ffabb90c584f4b70f55bf1785 100644 (file)
Binary files a/as/sample/outl.o and b/as/sample/outl.o differ
index 81f58a1201c966aaa90208f4c63299db39553b51..455ed3d1bce36c16897ec8f7aca4b87576c5f4ef 100644 (file)
@@ -157,7 +157,7 @@ WORD zero_data_cnt(const WORD *data, WORD wordlen)
 void disassemble_file(const char *file)
 {
     WORD *buf = NULL;
-    int len = 0;
+    WORD endptr = 0;
     FILE *fp = NULL;
 
     assert(file != NULL);
@@ -167,13 +167,14 @@ void disassemble_file(const char *file)
     }
 
     buf = calloc_chk(MAX_MEMSIZE, sizeof(WORD), "disassemble_file");
-    for(int i = 0; !feof(fp) && i < MAX_MEMSIZE; i++) {
+    for(WORD i = 0; !feof(fp); i++) {
         buf[i] = fgetword(fp);
-        len = i - 1;
+        endptr = i;
     }
     fclose(fp);
+    endptr--;
     fprintf(stdout, "MAIN    START\n");
-    disassemble_memory(buf, 0, len);
+    disassemble_memory(buf, 0, endptr);
     fprintf(stdout, "        END\n");
 }
 
index c8a51d27569399b50d35d5a2fd87f19f162bfc7e..d6d3a67e3589ef1b02c6bca0c2f88c92bd50151b 100644 (file)
@@ -16,25 +16,25 @@ MAIN    START
         CALL    #008A           ; #0018: #8000 #008A
         LD      GR1,GR3         ; #001A: #1413
         LD      GR1,#0066,GR1   ; #001B: #1011 #0066
-        ST      GR1,#0054,GR4   ; #001D: #1114 #0054
+        ST      GR1,#0055,GR4   ; #001D: #1114 #0055
         LAD     GR4,#0001,GR4   ; #001F: #1244 #0001
         LD      GR1,GR0         ; #0021: #1410
         JUMP    #0015           ; #0022: #6400 #0015
         LD      GR1,#0066,GR1   ; #0024: #1011 #0066
-        ST      GR1,#0054,GR4   ; #0026: #1114 #0054
+        ST      GR1,#0055,GR4   ; #0026: #1114 #0055
         LAD     GR4,#0001,GR4   ; #0028: #1244 #0001
         JUMP    #0032           ; #002A: #6400 #0032
         LD      GR1,#0066       ; #002C: #1010 #0066
-        ST      GR1,#0054,GR4   ; #002E: #1114 #0054
+        ST      GR1,#0055,GR4   ; #002E: #1114 #0055
         LAD     GR4,#0001,GR4   ; #0030: #1244 #0001
-        ST      GR4,#0065       ; #0032: #1140 #0065
-        LD      GR2,#0065       ; #0034: #1020 #0065
-        LAD     GR1,#0054       ; #0036: #1210 #0054
+        ST      GR4,#0054       ; #0032: #1140 #0054
+        LD      GR2,#0054       ; #0034: #1020 #0054
+        LAD     GR1,#0055       ; #0036: #1210 #0055
         CALL    #00CD           ; #0038: #8000 #00CD
         PUSH    #0000,GR1       ; #003A: #7001 #0000
         PUSH    #0000,GR2       ; #003C: #7002 #0000
-        LAD     GR1,#0054       ; #003E: #1210 #0054
-        LAD     GR2,#0065       ; #0040: #1220 #0065
+        LAD     GR1,#0055       ; #003E: #1210 #0055
+        LAD     GR2,#0054       ; #0040: #1220 #0054
         SVC     #0002           ; #0042: #F000 #0002
         LAD     GR1,#0100       ; #0044: #1210 #0100
         LAD     GR2,#0101       ; #0046: #1220 #0101
index 75f60569682f99c3fdf48af9ecf9b2a00d168970..52e9c002280904ef612c0614a9c95dd669d6155a 100644 (file)
@@ -15,5 +15,5 @@ MAIN    START
         DC      1               ; #0015: #0001 ::     1 = #0001 = 0000000000000001
         DC      10              ; #0016: #000A ::    10 = #000A = 0000000000001010 = '\n'
         DC      1               ; #0017: #0001 ::     1 = #0001 = 0000000000000001
-        DC      0               ; #0018: #0000 ::     0 = #0000 = 0000000000000000
+        DS      1               ; #0018: #0000
         END
index 007a693c6a77c6f8121c24fedcb8c559d9d77214..78a820a9c4766876a7fe5a74864569c037b8a04c 100644 (file)
@@ -4,7 +4,7 @@
         RET                     ; #0006: #8100
         DC      3               ; #0007: #0003 ::     3 = #0003 = 0000000000000011
         DC      2               ; #0008: #0002 ::     2 = #0002 = 0000000000000010
-        DC      0               ; #0009: #0000 ::     0 = #0000 = 0000000000000000
+        DS      1               ; #0009: #0000
 #0000: Disassemble::::        LD      GR1,#0007       ; #0000: #1010 #0007
 
 COMET II machine code monitor. Type ? for help.