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