ack/mach/z8000/as/mach2.c
1986-12-05 17:09:41 +00:00

35 lines
1.6 KiB
C

#define RCSID2 "$Header$"
/*
** Zilog z8000 machine dependent yacc declarations
*/
/* Some of the following mnemonics might seem a little cryptic,
** especially those like F1_1a. The decision to choose these mnemo-
** nics is based on the fact that the manual `Z8000 PLZ/ASM Assembly
** Language Programming Manual' distinguishes some instruction for-
** mats and gave them names like F1.1, etc. In fact section 3.3 of
** this manual describes the instruction set and mentions with each
** instruction also the corresponding instruction format(s). So I
** sorted all instructions on their instruction format(s) resulting
** in groups named F1_1, F1_2, F2_1, etc. (Groups consisting of one
** member where named to that member). Almost all groups were so
** consistent that writing one yacc-rule per group sufficed. Only
** some groups had to be split up resulting in mnemonics like F1_1a
** and F1_1b.
*/
%token <y_word> CALR CC CTLR CTLRFLAGS DJNZ FLAG F1_1a F1_1b
%token <y_word> F1_1F2_3 F1_2 F1_2F6_3 F2_1 F2_1F5_1 F5_1L F5_1R
%token <y_word> F6_4 F6_5 F6_6 F9_1 F9_2 F9_3 IN INTCB JP JR
%token <y_word> LD LDA LDAR LDCTL LDCTLB LDK LDL LDM LDR MREQ
%token <y_word> OUT POP PUSH R8 R16 R32 R64 RET SC TCC
/* From all addressing modes only 'im' and 'ra' might need more than
** 16 bits; This is achieved by using the global var 'immed' in
** case of 'im' and by returning a long in case of 'ra'.
*/
%type <y_word> ba bx coco1 coco2 ctlargs ctlbargs da dst flags
%type <y_word> im imexpr ints ir opr option option2 reg src x
%type <y_expr> ra