#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 CALR CC CTLR CTLRFLAGS DJNZ FLAG F1_1a F1_1b %token F1_1F2_3 F1_2 F1_2F6_3 F2_1 F2_1F5_1 F5_1L F5_1R %token F6_4 F6_5 F6_6 F9_1 F9_2 F9_3 IN INTCB JP JR %token LD LDA LDAR LDCTL LDCTLB LDK LDL LDM LDR MREQ %token 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 ba bx coco1 coco2 ctlargs ctlbargs da dst flags %type im imexpr ints ir opr option option2 reg src x %type ra