/* * (c) copyright 1990 by the Vrije Universiteit, Amsterdam, The Netherlands. * See the copyright notice in the ACK home directory, in the file "Copyright". */ #define RCSID2 "$Header$" /* * VAX-11 machine dependent yacc declarations */ /* operands are indicated with a letter combination: b - general operand of byte size w - general operand of word size l - general operand of long size u - general operand of > long size (immediate mode is not implemented for this size, and neither are immediate floating point encodings A - an operand of which the address is taken (so, no register or immediate mode) V - a bit-field operand (no immediate mode) Bb - byte offset branch Bw - word offset branch Bl - long offset branch Bx - branch, size of offset determined by instruction Be - extended conditional branch; the instruction may be replaced by a reverse-conditional branch over a branch or jump To reduce the number of terminals, some instructions that have operands of equal size are coded with an X instead of b, w, or l; these instructions have the size in the high order word of the valu field. This is needed because some yacc versions do not accept grammars with more than 127 terminal symbols. */ %token REG %token CASE_X_X_X %token OP0 %token OP1_A, OP1_Bx, OP1_u, OP1_Be %token OP1_BX, OP1_X %token OP2_A_A, OP2_A_l, OP2_b_b, OP2_b_l, OP2_b_u, OP2_b_w, OP2_l_A, OP2_l_Bb, OP2_l_b, OP2_l_l, OP2_l_u, OP2_l_w, OP2_u_b, OP2_u_l, OP2_u_u, OP2_u_w, OP2_w_b, OP2_w_l, OP2_w_u, OP2_w_w, OP2_l_Be %token OP3_b_b_b, OP3_b_l_l, OP3_b_u_u, OP3_b_w_A, OP3_l_V_Bb, OP3_l_l_Bb, OP3_l_l_l, OP3_l_w_A, OP3_u_u_u, OP3_u_w_A, OP3_w_A_A, OP3_w_A_l, OP3_w_w_w, OP3_l_V_Be %token OP4_A_l_w_A, OP4_b_b_b_Bw, OP4_l_b_V_l, OP4_l_l_b_V, OP4_l_l_l_Bw, OP4_l_l_l_u, OP4_l_u_l_l, OP4_u_u_u_Bw, OP4_w_A_A_A, OP4_w_A_A_b, OP4_w_A_w_A, OP4_w_w_w_Bw %token OP5_u_b_u_l_u, OP5_u_w_u_l_u, OP5_w_A_A_w_A, OP5_w_A_b_w_A %token OP6_b_w_A_b_w_A, OP6_l_l_l_l_l_l, OP6_w_A_b_A_w_A, OP6_w_A_w_A_w_A /* operand types: O - the b, w, l, A and V operands (they all fall into the same syntactic category) B - branch offsets (these do not result in an addressing mode byte) */ %type OP1_O, OP1_B %type OP2_O_O, OP2_O_B %type OP3_O_O_O, OP3_O_O_B %type OP4_O_O_O_O, OP4_O_O_O_B %type OP5_O_O_O_O_O %type OP6_O_O_O_O_O_O %type CASE_O_O_O %type oper