80 lines
1.3 KiB
C
80 lines
1.3 KiB
C
#define RCSID4 "$Header$"
|
|
|
|
/*
|
|
* (c) copyright 1983 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
|
*
|
|
* This product is part of the Amsterdam Compiler Kit.
|
|
*
|
|
* Permission to use, sell, duplicate or disclose this software must be
|
|
* obtained in writing. Requests for such permissions may be sent to
|
|
*
|
|
* Dr. Andrew S. Tanenbaum
|
|
* Wiskundig Seminarium
|
|
* Vrije Universiteit
|
|
* Postbox 7161
|
|
* 1007 MC Amsterdam
|
|
* The Netherlands
|
|
*
|
|
*/
|
|
|
|
/*
|
|
* Motorola 6800 parsing rules
|
|
*/
|
|
|
|
operation
|
|
:
|
|
NOARG
|
|
{ emit1($1);}
|
|
|
|
|
BRANCH expr
|
|
{ branch($1,$2);}
|
|
|
|
|
XOP '#' expr
|
|
{ emit1($1 - 0x20);
|
|
switch ($1 & 0x0F) {
|
|
case 0x03:
|
|
case 0x0C:
|
|
case 0x0E:
|
|
#ifdef RELOCATION
|
|
newrelo($3.typ, RELBR | RELO2);
|
|
#endif
|
|
emit2($3.val);
|
|
break;
|
|
default:
|
|
#ifdef RELOCATION
|
|
newrelo($3.typ, RELO1);
|
|
#endif
|
|
emit1($3.val);
|
|
}
|
|
}
|
|
|
|
|
XOP '<' expr
|
|
{ emit1($1 - 0x10);
|
|
#ifdef RELOCATION
|
|
newrelo($3.typ, RELO1);
|
|
#endif
|
|
emit1($3.val);
|
|
}
|
|
|
|
|
memref expr
|
|
{ emit1($1 + 0x10);
|
|
#ifdef RELOCATION
|
|
newrelo($2.typ, RELO2);
|
|
#endif
|
|
emit2($2.val);
|
|
}
|
|
|
|
|
memref expr ',' X
|
|
{ emit1($1);
|
|
#ifdef RELOCATION
|
|
newrelo($2.typ, RELO1);
|
|
#endif
|
|
emit1($2.val);
|
|
}
|
|
;
|
|
memref :
|
|
AOP
|
|
|
|
|
XOP
|
|
;
|