X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=src%2Fexec.c;h=b22fbf40bf57b7bfb221fef0aa1d8cf843dc76f8;hp=7329776f67943ba1c9f8b23dcb0b054ab1f1f55d;hb=15a07be760d84746bbace2d70326cd939f4568fd;hpb=17b48928d6fa43e8eeb24d3894d807475c75de69 diff --git a/src/exec.c b/src/exec.c index 7329776..b22fbf4 100644 --- a/src/exec.c +++ b/src/exec.c @@ -70,16 +70,6 @@ WORD get_adr_x(WORD adr, WORD oprx); */ WORD get_val_adr_x(WORD adr, WORD oprx); -/** - * @brief 汎用レジスタの番号からレジスタを表す文字列を返す - * - * @return 汎用レジスタを表す文字列。「GR0」「GR1」・・・「GR7」のいずれか - * - * @param word レジスタ番号[0-7]を表すWORD値 - */ -char *grstr(WORD word); - - /** * @brief 実行エラーの定義 */ @@ -850,69 +840,3 @@ execfin: fprintf(stderr, "Execute error - %d: %s\n", cerr->num, cerr->msg); } } - -bool disassemble_file(const char *file) -{ - bool stat = true; - FILE *fp; - WORD i = 0, w, cmd, x, adr; - CMDTYPE cmdtype = 0; - char *cmdname, *g, *g1, *g2; - - assert(file != NULL); - if((fp = fopen(file, "rb")) == NULL) { - perror(file); - return false; - } - - create_code_cmdtype(); /* 命令のコードとタイプがキーのハッシュ表を作成 */ - - fprintf(stdout, "MAIN\tSTART\n"); - for(; ;) { - fread(&w, sizeof(WORD), 1, fp); - if(feof(fp)) { - break; - } - cmd = w & 0xFF00; - cmdname = getcmdname(cmd); - cmdtype = getcmdtype(cmd); - if(cmd == 0xFF00 || (w != 0 && cmd == 0x0000)) { - fprintf(stdout, "\tDC\t%d\t\t\t\t; #%04X: #%04X :: ", w, i++, w); - print_dumpword(w, true); - } else if(cmdtype == R_ADR_X || cmdtype == ADR_X) { - fread(&adr, sizeof(WORD), 1, fp); - fprintf(stdout, "\t%s\t", cmdname); - if(cmdtype == R_ADR_X) { - g = grstr((w & 0x00F0) >> 4); - fprintf(stdout, "%s,", g); - FREE(g); - } - fprintf(stdout, "#%04X", adr); - if((x = w & 0x000F) != 0) { - fprintf(stdout, ",%s", g = grstr(x)); - FREE(g); - } - fprintf(stdout, "\t\t\t\t; #%04X: #%04X #%04X", i, w, adr); - i += 2; - } else { - fprintf(stdout, "\t%s", cmdname); - if(cmdtype == R1_R2) { - g1 = grstr((w & 0x00F0) >> 4); - g2 = grstr(w & 0x000F); - fprintf(stdout, "\t%s,%s", g1, g2); - FREE(g1); - FREE(g2); - } else if(cmdtype == R_) { - g = grstr((w & 0x00F0) >> 4); - fprintf(stdout, "\t%s", g); - FREE(g); - } - fprintf(stdout, "\t\t\t\t; #%04X: #%04X", i++, w); - } - fprintf(stdout, "\n"); - } - fprintf(stdout, "\tEND\n"); - free_code_cmdtype(); - fclose(fp); - return stat; -}