/* * (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 "$Id$" /* * 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