39 lines
1.8 KiB
C
39 lines
1.8 KiB
C
/*
|
|
* (c) copyright 1987 by the Vrije Universiteit, Amsterdam, The Netherlands.
|
|
* See the copyright notice in the ACK home directory, in the file "Copyright".
|
|
*/
|
|
#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
|