1 #define RCSID4 "$Id: mach4.c,v 3.3 1994/06/24 13:34:00 ceriel Exp $"
4 * (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
5 * See the copyright notice in the ACK home directory, in the file "Copyright".
9 /* Author: Leo van Moergestel */
12 * Signetics 2650 parsing rules
22 { emit1($1 | $3); page();
24 newrelo($4.typ, RELO1);
30 { emit1($1 | $3); rela($4, 0);}
33 { emit1($1 | $3); rela($5, 0x80);}
37 serror("register error");
43 absoa(par_exp, p_indexed, p_indirect);
49 newrelo($2.typ, RELO1);
58 { emit1($1 | $3); rela($4, 0);}
60 BRANCR ',' CC '*' expr
61 { emit1($1 | $3); rela($5, 0x80);}
65 serror("wrong condition");
66 emit1($1 | $3); rela($4, 0);}
68 BRANCRX ',' CC '*' expr
70 serror("wrong condition");
71 emit1($1 | $3); rela($5, 0x80);}
74 { emit1($1 | $3); absob($4, 0);}
76 BRANCA ',' CC '*' expr
77 { emit1($1 | $3); absob($5, 0x8000);}
81 serror("wrong condition");
82 emit1($1 | $3); absob($4, 0);}
84 BRANCAX ',' CC '*' expr
86 serror("wrong condition");
87 emit1($1 | $3); absob($5, 0x8000);}
90 { emit1($1 | $3); absob($4, 0);}
92 BRANRA ',' REG '*' expr
93 { emit1($1 | $3); absob($5, 0x8000);}
96 { emit1($1); rela($2, 0);}
99 { emit1($1); rela($3, 0x80);}
102 { emit1($1); absob($2, 0);}
105 { emit1($1); absob($3, 0x8000);}
113 { p_indexed = 0x6000;}
116 { p_indexed = 0x2000;}
119 { p_indexed = 0x4000;}
124 { par_exp = $1; p_indirect = 0;}
127 { par_exp = $2; p_indirect = 0x8000;}