#define WORDS_REVERSED /* high order word has lowest address */
#define LISTING /* enable listing facilities */
#define RELOCATION /* generate relocatable code */
+#define DEBUG 0
+
+#define Xfit(f) if (!(f)) Xnofit();
#undef valu_t
#define valu_t long
{ branch($1, $2);}
| DBR DREG ',' expr
{ $4.val -= (DOTVAL+2);
- fit(fitw($4.val));
+ Xfit(fitw($4.val));
emit2($1 | $2);
#ifdef RELOCATION
newrelo($4.typ, RELPC|RELO2|RELBR|RELWR);
| UNLK AREG
{ emit2(047130 | $2);}
| TRAP '#' absexp
- { fit(fit4($3)); emit2(047100|low4($3));}
+ { Xfit(fit4($3)); emit2(047100|low4($3));}
| RTD imm
{ test68010();
emit2(047164);
if (bits)
serror("bad addressing categorie");
if (flag & FITW)
- if (
+ Xfit (
! fitw(exp_1.val)
&&
(mrg_1 != 074 || ! fit16(exp_1.val))
- )
- nofit();
+ ) ;
if (flag & FITB) {
- if (
+ Xfit (
! fitb(exp_1.val)
&&
(mrg_1 != 074 || ! fit8(exp_1.val))
- )
- nofit();
+ );
if (mrg_1 == 074)
exp_1.val &= 0xFF;
}
index(hibyte)
{
- fit(fitb(exp_2.val));
+ Xfit(fitb(exp_2.val));
exp_2.val = hibyte | lowb(exp_2.val);
}
return;
}
if (mrg_2 < 010) {
- fit(fit3(exp_1.val));
+ Xfit(fit3(exp_1.val));
emit2((opc&0170430) | sz | low3(exp_1.val)<<9 | mrg_2);
return;
}
checksize(sz, 2);
- fit(exp_1.val == 1);
+ Xfit(exp_1.val == 1);
emit2((opc&0177700) | mrg_2);
ea_2(SIZE_W, MEM|ALT);
}
else
emit2(opc | lowb(exp.val));
} else {
- fit(fitw(exp.val));
+ Xfit(fitw(exp.val));
emit2(opc);
#ifdef RELOCATION
newrelo(exp.typ, RELPC|RELO2|RELBR|RELWR);
checksize(sz, 2|4);
index(ri<<12 | (sz&0200)<<4);
}
+
+Xnofit()
+{
+ if (pass == PASS_3) serror("too big");
+}