コミットメタ情報

リビジョンcd9c9fd5a01313d39a560f97b5553ab121b2a8f2 (tree)
日時2014-03-18 21:41:32
作者ttwilb <ttwilb@user...>
コミッターttwilb

ログメッセージ

コメントを付けた

変更サマリ

差分

--- a/jitcx86.c
+++ b/jitcx86.c
@@ -152,13 +152,13 @@ int jitCompiler(unsigned char *dst, unsigned char *dst1, const unsigned char *sr
152152 tmp_ucp[4] = (j >> 24) & 0xff;
153153 }
154154 }
155- if ((flags & JITC_PHASE1) == 0) {
155+ if ((flags & JITC_PHASE1) == 0) { // Phase 0ならば
156156 i = jitCompGetLabelNum(&w, src + 2);
157157 if (label[i].opt != 0 && w.err == 0) {
158- w.err = JITC_ERR_LABELREDEF;
158+ w.err = JITC_ERR_LABELREDEF; // すでに同じ値のラベルがあればエラー
159159 goto err_w;
160160 }
161- if (w.prefix != 0) {
161+ if (w.prefix != 0) { // CND命令の直後にラベルは設置できない
162162 w.err = JITC_ERR_PREFIX;
163163 goto err_w;
164164 }
@@ -270,7 +270,7 @@ int jitCompiler(unsigned char *dst, unsigned char *dst1, const unsigned char *sr
270270 w.prefix = 0;
271271 }
272272 j = 0;
273- if ((flags & JITC_PHASE1) != 0 || (((flags & JITC_PHASE1) == 0) && label[i].opt != 0)) // label番号iが確保されていれば (このif文は意味をなさない)
273+ if ((flags & JITC_PHASE1) != 0 || (((flags & JITC_PHASE1) == 0) && label[i].opt != 0)) // label番号iが確保されているか、Phase 1なら
274274 j = label[i].p - (w.dst + 4); // j はとび先の相対番地
275275 jitCompPutImm32(w.dst, j); // JMP もしくは JZ 命令のアドレス部を記述
276276 #if (jitCompA0001_OPTIMIZE_JMP != 0)
@@ -1654,7 +1654,7 @@ int jitc0(unsigned char **qq, unsigned char *q1, const unsigned char *p0, const
16541654 }
16551655
16561656 // 以下のjitCompile()呼び出しでは第二引数をq1-2にした方がよいのではないか?
1657- i = jitCompiler(q, q1, p0 + 2, p1, p0, label, JITC_MAXLABELS, level, di1_serial, 0);
1657+ i = jitCompiler(q, q1, p0 + 2, p1, p0, label, JITC_MAXLABELS, level, di1_serial, 0); // ラベルのチェック
16581658 if (i != 0){
16591659 return 2;
16601660 }
旧リポジトリブラウザで表示