Only call "newrelo" when needed.

This commit is contained in:
ceriel 1986-12-08 10:39:13 +00:00
parent 6bf947ee6e
commit a6ecac6f1d
2 changed files with 23 additions and 12 deletions

View file

@ -35,7 +35,8 @@ operation
{ emit1(0x10); emit1($1); { emit1(0x10); emit1($1);
$2.val -= (DOTVAL+2); $2.val -= (DOTVAL+2);
#ifdef RELOCATION #ifdef RELOCATION
newrelo($2.typ, RELPC|RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo($2.typ, RELPC|RELO2|RELBR);
#endif #endif
emit2($2.val); emit2($2.val);
} }
@ -44,7 +45,8 @@ operation
{ emit1($1); { emit1($1);
$2.val -= (DOTVAL+2); $2.val -= (DOTVAL+2);
#ifdef RELOCATION #ifdef RELOCATION
newrelo($2.typ, RELPC|RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo($2.typ, RELPC|RELO2|RELBR);
#endif #endif
emit2($2.val); emit2($2.val);
} }
@ -52,7 +54,8 @@ operation
IMMED '#' expr IMMED '#' expr
{ emit1($1); { emit1($1);
#ifdef RELOCATION #ifdef RELOCATION
newrelo($3.typ, RELO1); if (rflag != 0 && PASS_RELO)
newrelo($3.typ, RELO1);
#endif #endif
emit1($3.val); emit1($3.val);
} }
@ -64,13 +67,15 @@ operation
case 0x0C: case 0x0C:
case 0x0E: case 0x0E:
#ifdef RELOCATION #ifdef RELOCATION
newrelo($3.typ, RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo($3.typ, RELO2|RELBR);
#endif #endif
emit2($3.val); emit2($3.val);
break; break;
default: default:
#ifdef RELOCATION #ifdef RELOCATION
newrelo($3.typ, RELO1); if (rflag != 0 && PASS_RELO)
newrelo($3.typ, RELO1);
#endif #endif
emit1($3.val); emit1($3.val);
break; break;
@ -83,7 +88,8 @@ operation
else else
emit1or2($1 - 0x10); emit1or2($1 - 0x10);
#ifdef RELOCATION #ifdef RELOCATION
newrelo($3.typ, RELO1); if (rflag != 0 && PASS_RELO)
newrelo($3.typ, RELO1);
#endif #endif
emit1($3.val); emit1($3.val);
} }
@ -91,7 +97,8 @@ operation
XOP '>' expr XOP '>' expr
{ emit1or2($1 + 0x10); { emit1or2($1 + 0x10);
#ifdef RELOCATION #ifdef RELOCATION
newrelo($3.typ, RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo($3.typ, RELO2|RELBR);
#endif #endif
emit2($3.val); emit2($3.val);
} }
@ -129,7 +136,8 @@ operation
{ emit1or2($1); { emit1or2($1);
emit1(0x9F); emit1(0x9F);
#ifdef RELOCATION #ifdef RELOCATION
newrelo($3.typ, RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo($3.typ, RELO2|RELBR);
#endif #endif
emit2($3.val); emit2($3.val);
} }
@ -158,7 +166,8 @@ operation
} else { } else {
emit1or2($1 + 0x10); emit1or2($1 + 0x10);
#ifdef RELOCATION #ifdef RELOCATION
newrelo($2.typ, RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo($2.typ, RELO2|RELBR);
#endif #endif
emit2($2.val); emit2($2.val);
} }

View file

@ -35,7 +35,8 @@ expr_t exp;
emit1(opc); emit1(opc);
if (sm == 0) { if (sm == 0) {
#ifdef RELOCATION #ifdef RELOCATION
newrelo(exp.typ, RELPC|RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo(exp.typ, RELPC|RELO2|RELBR);
#endif #endif
emit2(dist); emit2(dist);
} else } else
@ -93,7 +94,8 @@ expr_t exp;
} else { } else {
emit1(0x89 + reg + ind); emit1(0x89 + reg + ind);
#ifdef RELOCATION #ifdef RELOCATION
newrelo(exp.typ, RELO2|RELBR); if (rflag != 0 && PASS_RELO)
newrelo(exp.typ, RELO2|RELBR);
#endif #endif
emit2(exp.val); emit2(exp.val);
} }