ack/mach/vax4/as/mach2.c

66 lines
2.4 KiB
C
Raw Normal View History

1990-01-12 16:55:50 +00:00
/*
* (c) copyright 1990 by the Vrije Universiteit, Amsterdam, The Netherlands.
1990-01-12 16:55:50 +00:00
* See the copyright notice in the ACK home directory, in the file "Copyright".
*/
1994-06-24 14:02:31 +00:00
#define RCSID2 "$Id$"
1990-01-12 16:55:50 +00:00
/*
* 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.
1990-01-12 16:55:50 +00:00
*/
%token <y_word> REG
%token <y_word> CASE_X_X_X
1990-01-12 16:55:50 +00:00
%token <y_word> OP0
%token <y_word> OP1_A OP1_Bx OP1_u OP1_Be
%token <y_word> OP1_BX OP1_X
%token <y_word> 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 <y_word> 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 <y_word> 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 <y_word> 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 <y_word> OP6_b_w_A_b_w_A OP6_l_l_l_l_l_l OP6_w_A_b_A_w_A
1990-01-12 16:55:50 +00:00
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 <y_word> OP1_O OP1_B
%type <y_word> OP2_O_O OP2_O_B
%type <y_word> OP3_O_O_O OP3_O_O_B
%type <y_word> OP4_O_O_O_O OP4_O_O_O_B
%type <y_word> OP5_O_O_O_O_O
%type <y_word> OP6_O_O_O_O_O_O
1990-01-12 16:55:50 +00:00
%type <y_word> CASE_O_O_O
%type <y_word> oper