リビジョン | cd9c9fd5a01313d39a560f97b5553ab121b2a8f2 (tree) |
---|---|
日時 | 2014-03-18 21:41:32 |
作者 | ttwilb <ttwilb@user...> |
コミッター | ttwilb |
コメントを付けた
@@ -152,13 +152,13 @@ int jitCompiler(unsigned char *dst, unsigned char *dst1, const unsigned char *sr | ||
152 | 152 | tmp_ucp[4] = (j >> 24) & 0xff; |
153 | 153 | } |
154 | 154 | } |
155 | - if ((flags & JITC_PHASE1) == 0) { | |
155 | + if ((flags & JITC_PHASE1) == 0) { // Phase 0ならば | |
156 | 156 | i = jitCompGetLabelNum(&w, src + 2); |
157 | 157 | if (label[i].opt != 0 && w.err == 0) { |
158 | - w.err = JITC_ERR_LABELREDEF; | |
158 | + w.err = JITC_ERR_LABELREDEF; // すでに同じ値のラベルがあればエラー | |
159 | 159 | goto err_w; |
160 | 160 | } |
161 | - if (w.prefix != 0) { | |
161 | + if (w.prefix != 0) { // CND命令の直後にラベルは設置できない | |
162 | 162 | w.err = JITC_ERR_PREFIX; |
163 | 163 | goto err_w; |
164 | 164 | } |
@@ -270,7 +270,7 @@ int jitCompiler(unsigned char *dst, unsigned char *dst1, const unsigned char *sr | ||
270 | 270 | w.prefix = 0; |
271 | 271 | } |
272 | 272 | 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なら | |
274 | 274 | j = label[i].p - (w.dst + 4); // j はとび先の相対番地 |
275 | 275 | jitCompPutImm32(w.dst, j); // JMP もしくは JZ 命令のアドレス部を記述 |
276 | 276 | #if (jitCompA0001_OPTIMIZE_JMP != 0) |
@@ -1654,7 +1654,7 @@ int jitc0(unsigned char **qq, unsigned char *q1, const unsigned char *p0, const | ||
1654 | 1654 | } |
1655 | 1655 | |
1656 | 1656 | // 以下の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); // ラベルのチェック | |
1658 | 1658 | if (i != 0){ |
1659 | 1659 | return 2; |
1660 | 1660 | } |