3 * c code tables-- compile to register
5 #if !defined(lint) && defined(DOSCCS)
6 static char sccsid[] = "@(#)optable 2.1 (2.11BSD GTE) 10/4/94";
9 struct table regtab[] = {
21 {41,cr40 /* - like + */},
333 /* field assign, value in reg. */
350 /* +, -, |, &~, << */
467 /* >> (all complicated cases taken care of by << -) */
473 /* * -- R must be odd on integers */
491 /* / and >> R must be odd on integers */
718 /* *=, <<= (for integer multiply, R must be odd) */
752 /* =/ ; R must be odd on integers */
820 /* >>= and =mod; R must be odd on integers */
908 /* =>> (all complicated cases done by =<< -) */
1035 /* >> for unsigned long */
1044 /* >>= for unsigned long */
1065 /* float, double -> int */
1071 /* double (float) to long */
1081 /* long to double */
1100 /* unsigned long to float(double) */
1120 /* integer to long */
1140 /* long to integer */
1151 /* *, /, remainder for longs. */
1163 /* *, /, rem for unsigned long */
1170 /* *=, /=, %= for unsigned long */
1178 /* *=, /=, %= for longs */
1179 /* Operands of the form &x op y, so stack space is known. */
1189 /* convert integer to character (sign extend) */
1195 /* divide, remainder for unsigned */
1208 /* /= mod for unsigned */
1258 /* (int *) - (int *) */
1266 * c code tables -- compile for side effects.
1267 * Also set condition codes properly (except for ++, --)
1270 struct table efftab[] = {
1277 {71,ci70 /* - like + */},
1737 /* =>> (all harder cases handled by =<< -) */
1843 * c code tables-- set condition codes
1846 struct table cctab[] = {
1857 {81,cc81 /* & as in "if ((a&b)==0)" */},
2065 /* & as in "if ((a&b) ==0)" */
2079 special case. apparently "u_char b; [u_]char a; if (b & a)..." was
2080 too complicated. the resulting code was horrid. this cuts the
2162 /* set codes right */
2170 * c code tables-- expression to -(sp)
2173 struct table sptab[] = {
2227 /* integer to long */
2245 /* setup for structure assign */