From: j8takagi Date: Thu, 2 Jul 2026 07:49:41 +0000 (+0900) Subject: disassemble.cの修正 X-Git-Tag: v0.6p05~1 X-Git-Url: https://j8takagi.net/gitweb?a=commitdiff_plain;h=9c04fa56b1078f804c41bd3ddcf7a2f95e154d63;p=yacasl2.git disassemble.cの修正 --- diff --git a/as/sample/outl.casl b/as/sample/outl.casl index f989012..1e8ada6 100644 --- a/as/sample/outl.casl +++ b/as/sample/outl.casl @@ -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の範囲にある正数の割算(筆算方式)を行う diff --git a/as/sample/outl.o b/as/sample/outl.o index c5f8c55..d4d8e8c 100644 Binary files a/as/sample/outl.o and b/as/sample/outl.o differ diff --git a/src/disassemble.c b/src/disassemble.c index 81f58a1..455ed3d 100644 --- a/src/disassemble.c +++ b/src/disassemble.c @@ -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"); } diff --git a/test/system/casl2rev/outl/0.txt b/test/system/casl2rev/outl/0.txt index c8a51d2..d6d3a67 100644 --- a/test/system/casl2rev/outl/0.txt +++ b/test/system/casl2rev/outl/0.txt @@ -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 diff --git a/test/system/casl2rev/sum_10/0.txt b/test/system/casl2rev/sum_10/0.txt index 75f6056..52e9c00 100644 --- a/test/system/casl2rev/sum_10/0.txt +++ b/test/system/casl2rev/sum_10/0.txt @@ -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 diff --git a/test/system/comet2monitor/opt_r/0.txt b/test/system/comet2monitor/opt_r/0.txt index 007a693..78a820a 100644 --- a/test/system/comet2monitor/opt_r/0.txt +++ b/test/system/comet2monitor/opt_r/0.txt @@ -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.