1 #include "defs.h" 2 static char sccsid[] = "@(#)optab.c 4.1 05/14/81"; 3 /* 4 * Argument access types 5 */ 6 #define ACCA (8<<3) /* address only */ 7 #define ACCR (1<<3) /* read */ 8 #define ACCW (2<<3) /* write */ 9 #define ACCM (3<<3) /* modify */ 10 #define ACCB (4<<3) /* branch displacement */ 11 #define ACCI (5<<3) /* XFC code */ 12 13 /* 14 * Argument data types 15 */ 16 #define TYPB 0 /* byte */ 17 #define TYPW 1 /* word */ 18 #define TYPL 2 /* long */ 19 #define TYPQ 3 /* quad */ 20 #define TYPF 4 /* floating */ 21 #define TYPD 5 /* double floating */ 22 23 24 TYPE struct optab *OPTAB; 25 struct optab { 26 char *iname; 27 char val; 28 char nargs; 29 char argtype[6]; 30 } optab[] = { 31 #define OP(a,b,c,d,e,f,g,h,i) {a,b,c,d,e,f,g,h,i} 32 #include "../as/instrs" 33 0}; 34 35 #define SYSTAB struct systab 36 SYSTAB { 37 int argc; 38 char *sname; 39 } systab[] = { 40 1, "indir", 41 0, "exit", 42 0, "fork", 43 2, "read", 44 2, "write", 45 2, "open", 46 0, "close", 47 0, "wait", 48 2, "creat", 49 2, "link", 50 1, "unlink", 51 2, "exec", 52 1, "chdir", 53 0, "time", 54 3, "mknod", 55 2, "chmod", 56 2, "chown", 57 1, "break", 58 2, "stat", 59 2, "seek", 60 0, "getpid", 61 3, "mount", 62 1, "umount", 63 0, "setuid", 64 0, "getuid", 65 0, "stime", 66 3, "ptrace", 67 0, "alarm", 68 1, "fstat", 69 0, "pause", 70 1, "30", 71 1, "stty", 72 1, "gtty", 73 0, "access", 74 0, "nice", 75 0, "sleep", 76 0, "sync", 77 1, "kill", 78 0, "csw", 79 0, "setpgrp", 80 0, "tell", 81 0, "dup", 82 0, "pipe", 83 1, "times", 84 4, "profil", 85 0, "tiu", 86 0, "setgid", 87 0, "getgid", 88 2, "signal", 89 0, "49", 90 0, "50", 91 0, "51", 92 0, "52", 93 0, "53", 94 0, "54", 95 0, "55", 96 0, "56", 97 0, "57", 98 0, "58", 99 0, "59", 100 0, "60", 101 0, "61", 102 0, "62", 103 0, "63", 104 }; 105 106 STRING regname[] = { "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", 107 "r8", "r9", "r10","r11","ap", "fp", "sp", "pc"}; 108 STRING fltimm[] = { 109 "0.5", "0.5625", "0.625", "0.6875", "0.75", "0.8125", "0.875", "0.9375", 110 "1.0", "1.125", "1.25", "1.375", "1.5", "1.625", "1.75", "1.875", 111 "2.0", "2.25", "2.5", "2.75", "3.0", "3.25", "3.5", "3.75", 112 "4.0", "4.5", "5.0", "5.5", "6.0", "6.5", "7.0", "7.5", 113 "8.0", "9.0", "10.0", "11.0", "12.0", "13.0", "14.0", "15.0", 114 "16.0", "18.0", "20.0", "22.0", "24.0", "26.0", "28.0", "30.0", 115 "32.0", "36.0", "40.0", "44.0", "48.0", "52.0", "56.0", "60.0", 116 "64.0", "72.0", "80.0", "88.0", "96.0", "104.0", "112.0", "120.0" 117 }; 118 119 char *fmtr = {"%r"}; 120 char *fmtR = {"%R"}; 121