1 #ifndef lint 2 static char sccsid[] = "@(#)c23.c 1.3 (Berkeley/CCI) 08/14/86"; 3 #endif 4 5 #include "c2.h" 6 #define readonly 7 8 readonly char revbr[] = { 9 JNE, JEQ, JGT, JLT, JGE, JLE, 10 JNE, JEQ, JHI, JLO, JHIS, JLOS, 11 JBS, JBC, }; 12 13 /* cursed be the preprocessor, whose impotence and stupidity 14 /* prevented this table being macro-generated from ../as/instrs 15 */ 16 17 readonly struct optab optab[] = { 18 "jbr",JBR,0, 19 "jeql",CBR,JEQ, 20 "jneq",CBR,JNE, 21 "jleq",CBR,JLE, 22 "jgeq",CBR,JGE, 23 "jlss",CBR,JLT, 24 "jgtr",CBR,JGT, 25 "jbc",CBR,JBC, 26 "jbs",CBR,JBS, 27 "jlequ",CBR,JLOS, 28 "jgequ",CBR,JHIS, 29 "jlssu",CBR,JLO, 30 "jgtru",CBR,JHI, 31 "adda",ADDA,LONG, 32 "addb2",ADD,U(BYTE,OP2), 33 "addb3",ADD,U(BYTE,OP3), 34 "addl2",ADD,U(LONG,OP2), 35 "addl3",ADD,U(LONG,OP3), 36 "addw2",ADD,U(WORD,OP2), 37 "addw3",ADD,U(WORD,OP3), 38 "aobleq",AOBLEQ,0, 39 "aoblss",AOBLSS,0, 40 "shal",SHAL,LONG, 41 "shar",SHAR,LONG, 42 "shll",SHL,LONG, 43 "shrl",SHR,LONG, 44 "shlq",SHL,QUAD, 45 "shrq",SHR,QUAD, 46 "bbc",CBR,JBC, 47 "bbs",CBR,JBS, 48 "bcc",CBR,JHIS, 49 "bcs",CBR,JLO, 50 "beql",CBR,JEQ, 51 "beqlu",CBR,JEQ, 52 "bgeq",CBR,JGE, 53 "bgequ",CBR,JHIS, 54 "bgtr",CBR,JGT, 55 "bgtru",CBR,JHI, 56 "andb2",AND,U(BYTE,OP2), 57 "andb3",AND,U(BYTE,OP3), 58 "andl2",AND,U(LONG,OP2), 59 "andl3",AND,U(LONG,OP3), 60 "andw2",AND,U(WORD,OP2), 61 "andw3",AND,U(WORD,OP3), 62 "orb2",OR,U(BYTE,OP2), 63 "orb3",OR,U(BYTE,OP3), 64 "orl2",OR,U(LONG,OP2), 65 "orl3",OR,U(LONG,OP3), 66 "orw2",OR,U(WORD,OP2), 67 "orw3",OR,U(WORD,OP3), 68 "bitb",BIT,BYTE, 69 "bitl",BIT,LONG, 70 "bitw",BIT,WORD, 71 "bleq",CBR,JLE, 72 "blequ",CBR,JLOS, 73 "blss",CBR,JLT, 74 "blssu",CBR,JLO, 75 "bneq",CBR,JNE, 76 "bnequ",CBR,JNE, 77 "brb",JBR,0, 78 "brw",JBR,0, 79 "bvc",CBR,0, 80 "bvs",CBR,0, 81 "callf",CALLF,0, 82 "calls",CALLS,0, 83 "casel",CASE,LONG, 84 "clrb",CLR,BYTE, 85 "clrl",CLR,LONG, 86 "clrw",CLR,WORD, 87 "cmpb",CMP,BYTE, 88 "cmpl",CMP,LONG, 89 "cmpw",CMP,WORD, 90 "cvtbl",CVT,U(BYTE,LONG), 91 "cvtbw",CVT,U(BYTE,WORD), 92 "cvtlb",CVT,U(LONG,BYTE), 93 "cvtlw",CVT,U(LONG,WORD), 94 "cvtwb",CVT,U(WORD,BYTE), 95 "cvtwl",CVT,U(WORD,LONG), 96 "decb",DEC,BYTE, 97 "decl",DEC,LONG, 98 "decw",DEC,WORD, 99 "divl2",DIV,U(LONG,OP2), 100 "divl3",DIV,U(LONG,OP3), 101 "ediv",EDIV,LONG, 102 #ifdef EMOD 103 "emod",EMOD,LONG, 104 #endif EMOD 105 "emul",EMUL,LONG, 106 "incb",INC,BYTE, 107 "incl",INC,LONG, 108 "incw",INC,WORD, 109 "jmp",JMP,0, 110 "mcomb",COM,BYTE, 111 "mcoml",COM,LONG, 112 "mcomw",COM,WORD, 113 "mnegb",NEG,BYTE, 114 "mnegl",NEG,LONG, 115 "mnegw",NEG,WORD, 116 "movab",MOVA,BYTE, 117 "moval",MOVA,LONG, 118 "movaw",MOVA,WORD, 119 "movb",MOV,BYTE, 120 "movl",MOV,LONG, 121 "movw",MOV,WORD, 122 "movzbl",MOVZ,U(BYTE,LONG), 123 "movzbw",MOVZ,U(BYTE,WORD), 124 "movzwl",MOVZ,U(WORD,LONG), 125 "mull2",MUL,U(LONG,OP2), 126 "mull3",MUL,U(LONG,OP3), 127 "pushab",PUSHA,BYTE, 128 "pushal",PUSHA,LONG, 129 "pushaw",PUSHA,WORD, 130 "pushb",PUSH,BYTE, 131 "pushl",PUSH,LONG, 132 "pushw",PUSH,WORD, 133 "ret",JBR,U(RET,2), 134 "ret#0",JBR,RET, 135 "ret#1",JBR,U(RET,1), 136 "ret#2",JBR,U(RET,2), 137 "suba",SUBA,LONG, 138 "subb2",SUB,U(BYTE,OP2), 139 "subb3",SUB,U(BYTE,OP3), 140 "subl2",SUB,U(LONG,OP2), 141 "subl3",SUB,U(LONG,OP3), 142 "subw2",SUB,U(WORD,OP2), 143 "subw3",SUB,U(WORD,OP3), 144 "tstb",TST,BYTE, 145 "tstl",TST,LONG, 146 "tstw",TST,WORD, 147 "xorb2",XOR,U(BYTE,OP2), 148 "xorb3",XOR,U(BYTE,OP3), 149 "xorl2",XOR,U(LONG,OP2), 150 "xorl3",XOR,U(LONG,OP3), 151 "xorw2",XOR,U(WORD,OP2), 152 "xorw3",XOR,U(WORD,OP3), 153 "movblk",MOVBLK,0, 154 "ldf",LDF,FLOAT, 155 "ldd",LDF,DOUBLE, 156 "lnf",LNF,FLOAT, 157 "lnd",LNF,DOUBLE, 158 "stf",STF,FLOAT, 159 "std",STF,DOUBLE, 160 "cmpf",CMPF,FLOAT, 161 "cmpd",CMPF,DOUBLE, 162 "cmpf2",CMPF2,FLOAT, 163 "cmpd2",CMPF2,DOUBLE, 164 "tstf",TSTF,FLOAT, 165 "tstd",TSTF,DOUBLE, 166 "pushd",PUSHD,DOUBLE, 167 "cvlf",CVLF,U(LONG,FLOAT), 168 "cvld",CVLF,U(LONG,DOUBLE), 169 "cvfl",CVFL,U(FLOAT,LONG), 170 "cvdl",CVFL,U(DOUBLE,LONG), 171 "ldfd",LDFD,U(FLOAT,DOUBLE), 172 "cvdf",CVDF,U(DOUBLE,FLOAT), 173 "negf",NEGF,FLOAT, 174 "negd",NEGF,DOUBLE, 175 "addf",ADDF,FLOAT, 176 "addd",ADDF,DOUBLE, 177 "subf",SUBF,FLOAT, 178 "subd",SUBF,DOUBLE, 179 "mulf",MULF,FLOAT, 180 "muld",MULF,DOUBLE, 181 "divf",DIVF,FLOAT, 182 "divd",DIVF,DOUBLE, 183 "sinf",SINF,FLOAT, 184 "cosf",COSF,FLOAT, 185 "atanf",ATANF,FLOAT, 186 "logf",LOGF,FLOAT, 187 "sqrtf",SQRTF,FLOAT, 188 "expf",EXPF,FLOAT, 189 ".globl",EROU,0, 190 ".text",TEXT,0, 191 ".data",DATA,0, 192 ".bss",BSS,0, 193 ".align",ALIGN,0, 194 ".word",WGEN,0, 195 ".long",LGEN,0, 196 ".set",SET,0, 197 ".lcomm",LCOMM,0, 198 ".comm",COMM,0, 199 ".end",END,0, 200 "mfpr",MFPR,LONG, 201 "mtpr",MTPR,LONG, 202 "probe",PROBE,BYTE, 203 "adwc",NIL,0, 204 "movob",MOVO,BYTE, 205 "movow",MOVO,WORD, 206 "bbssi",NIL,0, 207 "bicpsw",NIL,0, 208 "bispsw",NIL,0, 209 "bpt",NIL,0, 210 "btcs",NIL,0, 211 "cmps2",NIL,0, 212 "cmps3",NIL,0, 213 "emul",NIL,0, 214 "ffc",NIL,0, 215 "ffs",NIL,0, 216 "halt",NIL,0, 217 "insque",NIL,0, 218 "kcall",NIL,0, 219 "ldpctx",NIL,0, 220 "loadr",NIL,0, 221 "movpsl",NIL,0, 222 "movs2",NIL,0, 223 "movs3",NIL,0, 224 "nop",NIL,0, 225 "rei",NIL,0, 226 "remque",NIL,0, 227 "sbwc",NIL,0, 228 "storer",NIL,0, 229 "svpctx",NIL,0, 230 "sinf",NIL,0, 231 "cosf",NIL,0, 232 "atanf",NIL,0, 233 "logf",NIL,0, 234 "sqrtf",NIL,0, 235 "expf",NIL,0, 236 {0}}; 237