| 1 | #include "defs.h" |
| 2 | static char sccsid[] = "@(#)optab.c 4.2 %G%"; |
| 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 "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"}; |