X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fexec.c;h=b920fb157644cb754e5d511ea7ccf62b88c619f3;hb=c2820a4ee2f34c794268b5a61d3223f1c270d39c;hp=978fb8a2e2c2d23c5ea046dfa33c382bc706a7f2;hpb=bb35f74f287988bbfb2815b4c7f55a1d861dccfd;p=YACASL2.git diff --git a/src/exec.c b/src/exec.c index 978fb8a..b920fb1 100644 --- a/src/exec.c +++ b/src/exec.c @@ -4,6 +4,7 @@ #include "exec.h" #include "cerr.h" +#include "debugger.h" /** * @brief プログラムレジスタ(PR)を表すWORD値を文字列に変換 @@ -109,7 +110,7 @@ static CERR cerr_load[] = { }; /** - * @brief 実行モード: trace, logical, dump, debugger + * @brief 実行モード: trace, logical, dump, step */ EXECMODE execmode = {false, false, false, false}; @@ -811,7 +812,7 @@ void exec() fprintf(stdout, "\n"); } /* デバッガーモードの場合、デバッガーを起動 */ - if(execmode.debugger == true) { + if(execmode.step == true || getbps(sys->cpu->pr) == true) { debugger(); } /* プログラムレジスタをチェック */ @@ -849,6 +850,7 @@ void exec() } while(clock_end - clock_begin < CLOCKS_PER_SEC / sys->clocks); } execfin: + freebps(); free_code_cmdtype(); /* 命令のコードとタイプがキーのハッシュ表を解放 */ if(cerr->num > 0) { fprintf(stderr, "Execute error - %d: %s\n", cerr->num, cerr->msg);