18914Srrh #ifndef lint 2*36564Sbostic static char optab_sccsid[] = "@(#)optab.c 4.5 (Berkeley) 01/16/89"; 3*36564Sbostic #endif 43761Sroot 5*36564Sbostic /* 6*36564Sbostic * adb - (read-only) tables for VAX instruction decoding 7*36564Sbostic */ 8*36564Sbostic 9*36564Sbostic #define ADB 108914Srrh #undef INSTTAB 113761Sroot 12*36564Sbostic /* 13*36564Sbostic * Pick up definitions for insttab from the assembler, and also 14*36564Sbostic * the arrays ty_NORELOC and ty_nbyte (and soon ty_float); 15*36564Sbostic * then, make insttab. 16*36564Sbostic */ 17*36564Sbostic #include <sys/types.h> 188914Srrh #include "instrs.h" 19*36564Sbostic #include "assizetab.c" 203761Sroot 218914Srrh struct insttab insttab[] = { 228914Srrh #include "instrs.adb" 23*36564Sbostic 0 243761Sroot }; 253761Sroot 26*36564Sbostic /* 27*36564Sbostic * Register names, and floating point immediate constants. 28*36564Sbostic * The f.p. constants can be derived from the expression 29*36564Sbostic * 30*36564Sbostic * fp = (.5 + (n & 7) / 16.0) x (2 ^ (n >> 3)) 31*36564Sbostic * 32*36564Sbostic * or, alternatively, 33*36564Sbostic * 34*36564Sbostic * union { int i; float f; } u; u.i = (n << 3) | (1 << 14); u.f 35*36564Sbostic * 36*36564Sbostic * but there are only 64 of them, and this is simpler. 37*36564Sbostic */ 38*36564Sbostic char *regname[16] = { 39*36564Sbostic "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", 40*36564Sbostic "r8", "r9", "r10","r11","ap", "fp", "sp", "pc" 413761Sroot }; 42*36564Sbostic char *fltimm[64] = { 43*36564Sbostic "0.5", "0.5625", "0.625", "0.6875", "0.75", "0.8125", "0.875", "0.9375", 44*36564Sbostic "1.0", "1.125", "1.25", "1.375", "1.5", "1.625", "1.75", "1.875", 45*36564Sbostic "2.0", "2.25", "2.5", "2.75", "3.0", "3.25", "3.5", "3.75", 46*36564Sbostic "4.0", "4.5", "5.0", "5.5", "6.0", "6.5", "7.0", "7.5", 47*36564Sbostic "8.0", "9.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", 48*36564Sbostic "16.0", "18.0", "20.0", "22.0", "24.0", "26.0", "28.0", "30.0", 49*36564Sbostic "32.0", "36.0", "40.0", "44.0", "48.0", "52.0", "56.0", "60.0", 50*36564Sbostic "64.0", "72.0", "80.0", "88.0", "96.0", "104.0", "112.0", "120.0" 518914Srrh }; 52