126442Ssam #ifndef lint 2*29775Ssam static char sccsid[] = "@(#)c23.c 1.3 (Berkeley/CCI) 08/14/86"; 326442Ssam #endif 426442Ssam 526442Ssam #include "c2.h" 626442Ssam #define readonly 726442Ssam 826442Ssam readonly char revbr[] = { 926442Ssam JNE, JEQ, JGT, JLT, JGE, JLE, 1026442Ssam JNE, JEQ, JHI, JLO, JHIS, JLOS, 1126442Ssam JBS, JBC, }; 1226442Ssam 1326442Ssam /* cursed be the preprocessor, whose impotence and stupidity 1426442Ssam /* prevented this table being macro-generated from ../as/instrs 1526442Ssam */ 1626442Ssam 1726442Ssam readonly struct optab optab[] = { 1826442Ssam "jbr",JBR,0, 1926442Ssam "jeql",CBR,JEQ, 2026442Ssam "jneq",CBR,JNE, 2126442Ssam "jleq",CBR,JLE, 2226442Ssam "jgeq",CBR,JGE, 2326442Ssam "jlss",CBR,JLT, 2426442Ssam "jgtr",CBR,JGT, 2526442Ssam "jbc",CBR,JBC, 2626442Ssam "jbs",CBR,JBS, 2726442Ssam "jlequ",CBR,JLOS, 2826442Ssam "jgequ",CBR,JHIS, 2926442Ssam "jlssu",CBR,JLO, 3026442Ssam "jgtru",CBR,JHI, 3126442Ssam "adda",ADDA,LONG, 3226442Ssam "addb2",ADD,U(BYTE,OP2), 3326442Ssam "addb3",ADD,U(BYTE,OP3), 3426442Ssam "addl2",ADD,U(LONG,OP2), 3526442Ssam "addl3",ADD,U(LONG,OP3), 3626442Ssam "addw2",ADD,U(WORD,OP2), 3726442Ssam "addw3",ADD,U(WORD,OP3), 3826442Ssam "aobleq",AOBLEQ,0, 3926442Ssam "aoblss",AOBLSS,0, 4026442Ssam "shal",SHAL,LONG, 4126442Ssam "shar",SHAR,LONG, 4226442Ssam "shll",SHL,LONG, 4326442Ssam "shrl",SHR,LONG, 4426442Ssam "shlq",SHL,QUAD, 4526442Ssam "shrq",SHR,QUAD, 4626442Ssam "bbc",CBR,JBC, 4726442Ssam "bbs",CBR,JBS, 4826442Ssam "bcc",CBR,JHIS, 4926442Ssam "bcs",CBR,JLO, 5026442Ssam "beql",CBR,JEQ, 5126442Ssam "beqlu",CBR,JEQ, 5226442Ssam "bgeq",CBR,JGE, 5326442Ssam "bgequ",CBR,JHIS, 5426442Ssam "bgtr",CBR,JGT, 5526442Ssam "bgtru",CBR,JHI, 5626442Ssam "andb2",AND,U(BYTE,OP2), 5726442Ssam "andb3",AND,U(BYTE,OP3), 5826442Ssam "andl2",AND,U(LONG,OP2), 5926442Ssam "andl3",AND,U(LONG,OP3), 6026442Ssam "andw2",AND,U(WORD,OP2), 6126442Ssam "andw3",AND,U(WORD,OP3), 6226442Ssam "orb2",OR,U(BYTE,OP2), 6326442Ssam "orb3",OR,U(BYTE,OP3), 6426442Ssam "orl2",OR,U(LONG,OP2), 6526442Ssam "orl3",OR,U(LONG,OP3), 6626442Ssam "orw2",OR,U(WORD,OP2), 6726442Ssam "orw3",OR,U(WORD,OP3), 6826442Ssam "bitb",BIT,BYTE, 6926442Ssam "bitl",BIT,LONG, 7026442Ssam "bitw",BIT,WORD, 7126442Ssam "bleq",CBR,JLE, 7226442Ssam "blequ",CBR,JLOS, 7326442Ssam "blss",CBR,JLT, 7426442Ssam "blssu",CBR,JLO, 7526442Ssam "bneq",CBR,JNE, 7626442Ssam "bnequ",CBR,JNE, 7726442Ssam "brb",JBR,0, 7826442Ssam "brw",JBR,0, 7926442Ssam "bvc",CBR,0, 8026442Ssam "bvs",CBR,0, 8126442Ssam "callf",CALLF,0, 8226442Ssam "calls",CALLS,0, 8326442Ssam "casel",CASE,LONG, 8426442Ssam "clrb",CLR,BYTE, 8526442Ssam "clrl",CLR,LONG, 8626442Ssam "clrw",CLR,WORD, 8726442Ssam "cmpb",CMP,BYTE, 8826442Ssam "cmpl",CMP,LONG, 8926442Ssam "cmpw",CMP,WORD, 9026442Ssam "cvtbl",CVT,U(BYTE,LONG), 9126442Ssam "cvtbw",CVT,U(BYTE,WORD), 9226442Ssam "cvtlb",CVT,U(LONG,BYTE), 9326442Ssam "cvtlw",CVT,U(LONG,WORD), 9426442Ssam "cvtwb",CVT,U(WORD,BYTE), 9526442Ssam "cvtwl",CVT,U(WORD,LONG), 9626442Ssam "decb",DEC,BYTE, 9726442Ssam "decl",DEC,LONG, 9826442Ssam "decw",DEC,WORD, 9926442Ssam "divl2",DIV,U(LONG,OP2), 10026442Ssam "divl3",DIV,U(LONG,OP3), 10126442Ssam "ediv",EDIV,LONG, 10226442Ssam #ifdef EMOD 10326442Ssam "emod",EMOD,LONG, 10426442Ssam #endif EMOD 10526442Ssam "emul",EMUL,LONG, 10626442Ssam "incb",INC,BYTE, 10726442Ssam "incl",INC,LONG, 10826442Ssam "incw",INC,WORD, 10926442Ssam "jmp",JMP,0, 11026442Ssam "mcomb",COM,BYTE, 11126442Ssam "mcoml",COM,LONG, 11226442Ssam "mcomw",COM,WORD, 11326442Ssam "mnegb",NEG,BYTE, 11426442Ssam "mnegl",NEG,LONG, 11526442Ssam "mnegw",NEG,WORD, 11626442Ssam "movab",MOVA,BYTE, 11726442Ssam "moval",MOVA,LONG, 11826442Ssam "movaw",MOVA,WORD, 11926442Ssam "movb",MOV,BYTE, 12026442Ssam "movl",MOV,LONG, 12126442Ssam "movw",MOV,WORD, 12226442Ssam "movzbl",MOVZ,U(BYTE,LONG), 12326442Ssam "movzbw",MOVZ,U(BYTE,WORD), 12426442Ssam "movzwl",MOVZ,U(WORD,LONG), 12526442Ssam "mull2",MUL,U(LONG,OP2), 12626442Ssam "mull3",MUL,U(LONG,OP3), 12726442Ssam "pushab",PUSHA,BYTE, 12826442Ssam "pushal",PUSHA,LONG, 12926442Ssam "pushaw",PUSHA,WORD, 13026442Ssam "pushb",PUSH,BYTE, 13126442Ssam "pushl",PUSH,LONG, 13226442Ssam "pushw",PUSH,WORD, 13326442Ssam "ret",JBR,U(RET,2), 13426442Ssam "ret#0",JBR,RET, 13526442Ssam "ret#1",JBR,U(RET,1), 13626442Ssam "ret#2",JBR,U(RET,2), 13726442Ssam "suba",SUBA,LONG, 13826442Ssam "subb2",SUB,U(BYTE,OP2), 13926442Ssam "subb3",SUB,U(BYTE,OP3), 14026442Ssam "subl2",SUB,U(LONG,OP2), 14126442Ssam "subl3",SUB,U(LONG,OP3), 14226442Ssam "subw2",SUB,U(WORD,OP2), 14326442Ssam "subw3",SUB,U(WORD,OP3), 14426442Ssam "tstb",TST,BYTE, 14526442Ssam "tstl",TST,LONG, 14626442Ssam "tstw",TST,WORD, 14726442Ssam "xorb2",XOR,U(BYTE,OP2), 14826442Ssam "xorb3",XOR,U(BYTE,OP3), 14926442Ssam "xorl2",XOR,U(LONG,OP2), 15026442Ssam "xorl3",XOR,U(LONG,OP3), 15126442Ssam "xorw2",XOR,U(WORD,OP2), 15226442Ssam "xorw3",XOR,U(WORD,OP3), 15326442Ssam "movblk",MOVBLK,0, 15426442Ssam "ldf",LDF,FLOAT, 15526442Ssam "ldd",LDF,DOUBLE, 15626442Ssam "lnf",LNF,FLOAT, 15726442Ssam "lnd",LNF,DOUBLE, 15826442Ssam "stf",STF,FLOAT, 15926442Ssam "std",STF,DOUBLE, 16026442Ssam "cmpf",CMPF,FLOAT, 16126442Ssam "cmpd",CMPF,DOUBLE, 16226442Ssam "cmpf2",CMPF2,FLOAT, 16326442Ssam "cmpd2",CMPF2,DOUBLE, 16426442Ssam "tstf",TSTF,FLOAT, 16526442Ssam "tstd",TSTF,DOUBLE, 16626442Ssam "pushd",PUSHD,DOUBLE, 16726442Ssam "cvlf",CVLF,U(LONG,FLOAT), 16826442Ssam "cvld",CVLF,U(LONG,DOUBLE), 16926442Ssam "cvfl",CVFL,U(FLOAT,LONG), 17026442Ssam "cvdl",CVFL,U(DOUBLE,LONG), 17126442Ssam "ldfd",LDFD,U(FLOAT,DOUBLE), 17226442Ssam "cvdf",CVDF,U(DOUBLE,FLOAT), 17326442Ssam "negf",NEGF,FLOAT, 17426442Ssam "negd",NEGF,DOUBLE, 17526442Ssam "addf",ADDF,FLOAT, 17626442Ssam "addd",ADDF,DOUBLE, 17726442Ssam "subf",SUBF,FLOAT, 17826442Ssam "subd",SUBF,DOUBLE, 17926442Ssam "mulf",MULF,FLOAT, 18026442Ssam "muld",MULF,DOUBLE, 18126442Ssam "divf",DIVF,FLOAT, 18226442Ssam "divd",DIVF,DOUBLE, 18326442Ssam "sinf",SINF,FLOAT, 18426442Ssam "cosf",COSF,FLOAT, 18526442Ssam "atanf",ATANF,FLOAT, 18626442Ssam "logf",LOGF,FLOAT, 18726442Ssam "sqrtf",SQRTF,FLOAT, 18826442Ssam "expf",EXPF,FLOAT, 18926442Ssam ".globl",EROU,0, 19026442Ssam ".text",TEXT,0, 19126442Ssam ".data",DATA,0, 19226442Ssam ".bss",BSS,0, 19326442Ssam ".align",ALIGN,0, 19426442Ssam ".word",WGEN,0, 19526442Ssam ".long",LGEN,0, 19626442Ssam ".set",SET,0, 19726442Ssam ".lcomm",LCOMM,0, 19826442Ssam ".comm",COMM,0, 19926442Ssam ".end",END,0, 20026442Ssam "mfpr",MFPR,LONG, 20126442Ssam "mtpr",MTPR,LONG, 20226442Ssam "probe",PROBE,BYTE, 203*29775Ssam "adwc",NIL,0, 20426442Ssam "movob",MOVO,BYTE, 20526442Ssam "movow",MOVO,WORD, 206*29775Ssam "bbssi",NIL,0, 207*29775Ssam "bicpsw",NIL,0, 208*29775Ssam "bispsw",NIL,0, 209*29775Ssam "bpt",NIL,0, 210*29775Ssam "btcs",NIL,0, 211*29775Ssam "cmps2",NIL,0, 212*29775Ssam "cmps3",NIL,0, 213*29775Ssam "emul",NIL,0, 214*29775Ssam "ffc",NIL,0, 215*29775Ssam "ffs",NIL,0, 216*29775Ssam "halt",NIL,0, 217*29775Ssam "insque",NIL,0, 218*29775Ssam "kcall",NIL,0, 219*29775Ssam "ldpctx",NIL,0, 220*29775Ssam "loadr",NIL,0, 221*29775Ssam "movpsl",NIL,0, 222*29775Ssam "movs2",NIL,0, 223*29775Ssam "movs3",NIL,0, 224*29775Ssam "nop",NIL,0, 225*29775Ssam "rei",NIL,0, 226*29775Ssam "remque",NIL,0, 227*29775Ssam "sbwc",NIL,0, 228*29775Ssam "storer",NIL,0, 229*29775Ssam "svpctx",NIL,0, 230*29775Ssam "sinf",NIL,0, 231*29775Ssam "cosf",NIL,0, 232*29775Ssam "atanf",NIL,0, 233*29775Ssam "logf",NIL,0, 234*29775Ssam "sqrtf",NIL,0, 235*29775Ssam "expf",NIL,0, 236*29775Ssam {0}}; 237