1 "$Id: table,v 1.7 1994/06/24 12:54:33 ceriel Exp $"
2 #define em_bsize 2 /* must be equal to EM_BSIZE */
3 #define ND !defined($1)
7 #define MAX (254-em_bsize-BASE)
8 #define IN(x) (x>=MIN && x<=MAX)
9 #define IND(x) (x>=MIN && x<=(MAX-2))
11 /*****************************************************\
13 **** 6 5 0 0 B A C K E N D T A B L E ****
15 \*****************************************************/
19 * INTEGER SIZE: 16 bits
20 * POINTER SIZE: 16 bits
31 /*********************\
33 \*********************/
38 AX = ("<dummy>",2,AA,XX), R16.
40 /* AX is a registerpair, A contains the highbyte of a word and
41 * X contains the lowbyte
50 IMMEDIATE = {INT off;} 1 "#%[off]" /* a fake token the
56 /***********************************\
57 * T O K E N E X P R E S S I O N S *
58 \***********************************/
61 AAA = IMMEDIATE /* a fake tokenexpression
74 loc ($1%256)==($1/256) | |
84 ldc highw(1)==loww(1) && (loww(1)%256)==(loww(1)/256) | |
86 "lda #[%(loww(1)%)].l"
92 "lda #[%(highw(1)%)].h"
93 "ldx #[%(highw(1)%)].l"
95 "lda #[%(loww(1)%)].h"
96 "ldx #[%(loww(1)%)].l"
162 lxl $1<=255 | | /* n restricted to a max of 255 */
171 lxa $1<=255 | | /* n restricted to a max of 255 */
244 /* GROUP 2 - STORE */
350 /* GROUP 3 - INTEGER ARITHMETIC */
352 loc lol adi (IN($2) && $3==2) | |
363 lol loc adi | | | | loc $2 lol $1 adi $3 |
364 lol lol adi (IN($1) && IN($2) && $3==2) | |
379 lol loe adi (IN($1) && $3==2) | |
390 loe lol adi | | | | lol $2 loe $1 adi $3 |
391 loe loe adi $3==2 | |
400 loc loe adi $3==2 | |
409 loe loc adi | | | | loc $2 loe $1 adi $3 |
410 ldl adi IND($1) && $2==2 | |
434 loc adi $2==2 | R16 |
443 lol adi IN($1) && $2==2 | R16 |
454 loe adi $2==2 | R16 |
463 lol lol adi IN($1) && !IN($2) && $3==2
464 | | | | lol $2 lol $1 adi $3 |
476 loc lol sbi (IN($2) && $3==2) | |
487 lol loc sbi | | | | lol $1 loc 0-$2 adi $3 |
488 lol lol sbi (IN($1) && IN($2) && $3==2) | |
503 lol loe sbi (IN($1) && $3==2) | |
514 loe lol sbi (IN($2) && $3==2) | |
525 loe loe sbi $3==2 | |
534 loc loe sbi $3==2 | |
543 loe loc sbi | | | | loe $1 loc 0-$2 adi $3 |
544 ldl sbi IND($1) && $2==2 | |
568 loc sbi $2==2 | R16 |
577 lol sbi IN($1) && $2==2 | R16 |
588 loe sbi $2==2 | R16 |
608 loc lol mli (IN($2) && $3==2) | |
622 lol loc mli | | | | loc $2 lol $1 mli $3 |
623 lol lol mli (IN($1) && IN($2) && $3==2) | |
639 lol loe mli (IN($1) && $3==2) | |
653 loe lol mli (IN($2) && $3==2) | | | | lol $2 loe $1 mli $3 |
654 loe loe mli $3==2 | |
666 loc loe mli $3==2 | |
678 loe loc mli | | | | loc $2 loe $1 mli $3 |
679 ldl mli IND($1) && $2==2 | |
707 loc mli $2==2 | R16 |
716 lol mli IN($1) && $2==2 | R16 |
727 loe mli $2==2 | R16 |
736 lol lol mli IN($1) && !IN($2) && $3==2
737 | | | | lol $2 lol $1 mli $3 |
749 loc lol dvi (IN($2) && $3==2) | |
765 lol loc dvi (IN($1) && $3==2) | |
781 lol lol dvi (IN($1) && IN($2) && $3==2) | |
799 lol loe dvi (IN($1) && $3==2) | |
815 loe lol dvi (IN($2) && $3==2) | |
831 loe loe dvi $3==2 | |
845 loc loe dvi $3==2 | |
859 loe loc dvi $3==2 | |
873 ldl dvi IND($1) && $2==2 | |
905 loc dvi $2==2 | R16 |
916 lol dvi IN($1) && $2==2 | R16 |
929 loe dvi $2==2 | R16 |
997 /* GROUP 4 - UNSIGNED ARITHMETIC */
999 loc lol adu | | | | loc $1 lol $2 adi $3 |
1000 lol loc adu | | | | lol $1 loc $2 adi $3 |
1001 lol lol adu | | | | lol $1 lol $2 adi $3 |
1002 lol loe adu | | | | lol $1 loe $2 adi $3 |
1003 loe lol adu | | | | loe $1 lol $2 adi $3 |
1004 loe loe adu | | | | loe $1 loe $2 adi $3 |
1005 loc loe adu | | | | loc $1 loe $2 adi $3 |
1006 loe loc adu | | | | loe $1 loc $2 adi $3 |
1007 ldl adu | | | | ldl $1 adi $2 |
1008 lde adu | | | | lde $1 adi $2 |
1009 loc adu | | | | loc $1 adi $2 |
1010 lol adu | | | | lol $1 adi $2 |
1011 loe adu | | | | loe $1 adi $2 |
1012 adu | | | | adi $1 |
1014 loc lol sbu | | | | loc $1 lol $2 sbi $3 |
1015 lol loc sbu | | | | lol $1 loc $2 sbi $3 |
1016 lol lol sbu | | | | lol $1 lol $2 sbi $3 |
1017 lol loe sbu | | | | lol $1 loe $2 sbi $3 |
1018 loe lol sbu | | | | loe $1 lol $2 sbi $3 |
1019 loe loe sbu | | | | loe $1 loe $2 sbi $3 |
1020 loc loe sbu | | | | loc $1 loe $2 sbi $3 |
1021 loe loc sbu | | | | loe $1 loc $2 sbi $3 |
1022 ldl sbu | | | | ldl $1 sbi $2 |
1023 lde sbu | | | | lde $1 sbi $2 |
1024 loc sbu | | | | loc $1 sbi $2 |
1025 lol sbu | | | | lol $1 sbi $2 |
1026 loe sbu | | | | loe $1 sbi $2 |
1027 sbu | | | | sbi $1 |
1029 loc lol mlu (IN($2) && $3==2) | |
1045 lol loc mlu | | | | loc $2 lol $1 mlu $3 |
1046 lol lol mlu (IN($1) && IN($2) && $3==2) | |
1064 lol loe mlu (IN($1) && $3==2) | |
1080 loe lol mlu (IN($2) && $3==2) | | | | lol $2 loe $1 mlu $3 |
1081 loe loe mlu $3==2 | |
1095 loc loe mlu $3==2 | |
1109 loe loc mlu | | | | loc $2 loe $1 mlu $3 |
1110 ldl mlu IND($1) && $2==2 | |
1142 loc mlu $2==2 | R16 |
1153 lol mlu IN($1) && $2==2 | R16 |
1166 loe mlu $2==2 | R16 |
1177 lol lol mlu IN($1) && !IN($2) && $3==2
1178 | | | | lol $2 lol $1 mlu $3 |
1191 loc lol dvu (IN($2) && $3==2) | |
1207 lol loc dvu (IN($1) && $3==2) | |
1223 lol lol dvu (IN($1) && IN($2) && $3==2) | |
1241 lol loe dvu (IN($1) && $3==2) | |
1257 loe lol dvu (IN($2) && $3==2) | |
1273 loe loe dvu $3==2 | |
1287 loc loe dvu $3==2 | |
1301 loe loc dvu $3==2 | |
1315 ldl dvu IND($1) && $2==2 | |
1347 loc dvu $2==2 | R16 |
1358 lol dvu IN($1) && $2==2 | R16 |
1371 loe dvu $2==2 | R16 |
1401 slu | | | | sli $1 |
1414 /* GROUP 6 - POINTER ARITHMETIC */
1417 adp | | | | loc $1 adi 2 |
1434 /* GROUP 7 INCREMENT/DECREMENT/ZERO */
1540 zer $1>0 && $1<=256 | |
1547 /* GROUP 8 - CONVERT (stack: source, source size, dest. size (top)) */
1549 loc loc cii $1==1 && $2==2 | R16 |
1562 loc loc cui $1==$2 | | | | |
1563 loc loc ciu $1==$2 | | | | |
1564 loc loc cuu $1==2 && $2==4 | | | | loc 0 |
1567 /* GROUP 9 - LOGICAL */
1676 /* GROUP 10 - SETS */
1678 loc inn $1<0 && $2==2 | R16 |
1682 loc inn $2==2 && $1==0 | R16 |
1688 loc inn $2==2 && $1>0 && $1<16 | R16 |
1700 loc inn zeq $1>0 && $1<16 && $2==2 | R16 |
1709 loc inn zne $1>0 && $1<16 && $2==2 | R16 |
1732 inn zeq $1==2 | R16 |
1744 inn zne $1==2 | R16 |
1764 loc set $2==2 && $1>=0 && $1<16 | |
1798 /* GROUP 11 - ARRAY */
1800 lae lar defined(rom(1,3)) | | | | lae $1 aar $2 loi rom(1,3) |
1808 lae sar defined(rom(1,3)) | | | | lae $1 aar $2 sti rom(1,3) |
1816 lae aar $2==2 && rom(1,3)==1 && rom(1,1)==0 | | | | adi 2 |
1817 lae aar $2==2 && rom(1,3)==1 && rom(1,1)!=0 | |
1818 | | adi 2 adp 0-rom(1,1) |
1819 lae aar $2==2 && rom(1,3)==2 && rom(1,1)==0 | R16 |
1827 lae aar $2==2 && rom(1,3)==2 && rom(1,1)!=0 | R16 |
1834 | %[1] | adi 2 adp (0-rom(1,1))*2 |
1835 lae aar $2==2 && rom(1,3)>2 && rom(1,1)==0 | |
1836 | | loc rom(1,3) mli 2 adi 2 |
1837 lae aar $2==2 && rom(1,3)>2 && rom(1,1)!=0 | |
1838 | | loc rom(1,3) mli 2 adi 2 adp (0-rom(1,1))*rom(1,3) |
1848 /* GROUP 12 - COMPARE */
1909 /* GROUP 13 - BRANCH */
1957 cmi zlt $1==2 | | | | blt $2 |
1958 cmp zlt | | | | blt $2 |
1963 cmi zle $1==2 | | | | ble $2 |
1964 cmp zle | | | | ble $2 |
1972 cmi zeq $1==2 | | | | beq $2 |
1973 cmp zeq | | | | beq $2 |
1974 cms zeq $1==2 | | | | beq $2 |
1981 cmi zne $1==2 | | | | bne $2 |
1982 cmp zne | | | | bne $2 |
1983 cms zne $1==2 | | | | bne $2 |
1990 cmi zge $1==2 | | | | bge $2 |
1991 cmp zge | | | | bge $2 |
1996 cmi zgt $1==2 | | | | bgt $2 |
1997 cmp zgt | | | | bgt $2 |
2007 /* GROUP 14 - PROCEDURE CALL */
2030 lfr ret $1==$2 | | | | ret 0 |
2031 asp lfr ret $2==$3 | | | | ret 0 |
2032 ret $1==0 || $1==2 || $1==4 | |
2039 /* GROUP 15 - MISCELLANOUS */
2055 blm $1==0 | | | | asp 4 |
2204 lol lal sti $1==$2 && $3==1 | | | | | /* throw away funny C-proc-prolog */
2212 * Every EM floating point instruction is translated
2213 * into a library call. At present, these library
2214 * routines generate an 'Illegal EM instruction' trap.
2297 MOVES: (AAA,AAA,"nop")
2299 STACKS: (R16, , "jsr Push")