#ifndef lint static char sccsid[] = "@(#)c23.c 1.3 (Berkeley/CCI) 08/14/86"; #endif #include "c2.h" #define readonly readonly char revbr[] = { JNE, JEQ, JGT, JLT, JGE, JLE, JNE, JEQ, JHI, JLO, JHIS, JLOS, JBS, JBC, }; /* cursed be the preprocessor, whose impotence and stupidity /* prevented this table being macro-generated from ../as/instrs */ readonly struct optab optab[] = { "jbr",JBR,0, "jeql",CBR,JEQ, "jneq",CBR,JNE, "jleq",CBR,JLE, "jgeq",CBR,JGE, "jlss",CBR,JLT, "jgtr",CBR,JGT, "jbc",CBR,JBC, "jbs",CBR,JBS, "jlequ",CBR,JLOS, "jgequ",CBR,JHIS, "jlssu",CBR,JLO, "jgtru",CBR,JHI, "adda",ADDA,LONG, "addb2",ADD,U(BYTE,OP2), "addb3",ADD,U(BYTE,OP3), "addl2",ADD,U(LONG,OP2), "addl3",ADD,U(LONG,OP3), "addw2",ADD,U(WORD,OP2), "addw3",ADD,U(WORD,OP3), "aobleq",AOBLEQ,0, "aoblss",AOBLSS,0, "shal",SHAL,LONG, "shar",SHAR,LONG, "shll",SHL,LONG, "shrl",SHR,LONG, "shlq",SHL,QUAD, "shrq",SHR,QUAD, "bbc",CBR,JBC, "bbs",CBR,JBS, "bcc",CBR,JHIS, "bcs",CBR,JLO, "beql",CBR,JEQ, "beqlu",CBR,JEQ, "bgeq",CBR,JGE, "bgequ",CBR,JHIS, "bgtr",CBR,JGT, "bgtru",CBR,JHI, "andb2",AND,U(BYTE,OP2), "andb3",AND,U(BYTE,OP3), "andl2",AND,U(LONG,OP2), "andl3",AND,U(LONG,OP3), "andw2",AND,U(WORD,OP2), "andw3",AND,U(WORD,OP3), "orb2",OR,U(BYTE,OP2), "orb3",OR,U(BYTE,OP3), "orl2",OR,U(LONG,OP2), "orl3",OR,U(LONG,OP3), "orw2",OR,U(WORD,OP2), "orw3",OR,U(WORD,OP3), "bitb",BIT,BYTE, "bitl",BIT,LONG, "bitw",BIT,WORD, "bleq",CBR,JLE, "blequ",CBR,JLOS, "blss",CBR,JLT, "blssu",CBR,JLO, "bneq",CBR,JNE, "bnequ",CBR,JNE, "brb",JBR,0, "brw",JBR,0, "bvc",CBR,0, "bvs",CBR,0, "callf",CALLF,0, "calls",CALLS,0, "casel",CASE,LONG, "clrb",CLR,BYTE, "clrl",CLR,LONG, "clrw",CLR,WORD, "cmpb",CMP,BYTE, "cmpl",CMP,LONG, "cmpw",CMP,WORD, "cvtbl",CVT,U(BYTE,LONG), "cvtbw",CVT,U(BYTE,WORD), "cvtlb",CVT,U(LONG,BYTE), "cvtlw",CVT,U(LONG,WORD), "cvtwb",CVT,U(WORD,BYTE), "cvtwl",CVT,U(WORD,LONG), "decb",DEC,BYTE, "decl",DEC,LONG, "decw",DEC,WORD, "divl2",DIV,U(LONG,OP2), "divl3",DIV,U(LONG,OP3), "ediv",EDIV,LONG, #ifdef EMOD "emod",EMOD,LONG, #endif EMOD "emul",EMUL,LONG, "incb",INC,BYTE, "incl",INC,LONG, "incw",INC,WORD, "jmp",JMP,0, "mcomb",COM,BYTE, "mcoml",COM,LONG, "mcomw",COM,WORD, "mnegb",NEG,BYTE, "mnegl",NEG,LONG, "mnegw",NEG,WORD, "movab",MOVA,BYTE, "moval",MOVA,LONG, "movaw",MOVA,WORD, "movb",MOV,BYTE, "movl",MOV,LONG, "movw",MOV,WORD, "movzbl",MOVZ,U(BYTE,LONG), "movzbw",MOVZ,U(BYTE,WORD), "movzwl",MOVZ,U(WORD,LONG), "mull2",MUL,U(LONG,OP2), "mull3",MUL,U(LONG,OP3), "pushab",PUSHA,BYTE, "pushal",PUSHA,LONG, "pushaw",PUSHA,WORD, "pushb",PUSH,BYTE, "pushl",PUSH,LONG, "pushw",PUSH,WORD, "ret",JBR,U(RET,2), "ret#0",JBR,RET, "ret#1",JBR,U(RET,1), "ret#2",JBR,U(RET,2), "suba",SUBA,LONG, "subb2",SUB,U(BYTE,OP2), "subb3",SUB,U(BYTE,OP3), "subl2",SUB,U(LONG,OP2), "subl3",SUB,U(LONG,OP3), "subw2",SUB,U(WORD,OP2), "subw3",SUB,U(WORD,OP3), "tstb",TST,BYTE, "tstl",TST,LONG, "tstw",TST,WORD, "xorb2",XOR,U(BYTE,OP2), "xorb3",XOR,U(BYTE,OP3), "xorl2",XOR,U(LONG,OP2), "xorl3",XOR,U(LONG,OP3), "xorw2",XOR,U(WORD,OP2), "xorw3",XOR,U(WORD,OP3), "movblk",MOVBLK,0, "ldf",LDF,FLOAT, "ldd",LDF,DOUBLE, "lnf",LNF,FLOAT, "lnd",LNF,DOUBLE, "stf",STF,FLOAT, "std",STF,DOUBLE, "cmpf",CMPF,FLOAT, "cmpd",CMPF,DOUBLE, "cmpf2",CMPF2,FLOAT, "cmpd2",CMPF2,DOUBLE, "tstf",TSTF,FLOAT, "tstd",TSTF,DOUBLE, "pushd",PUSHD,DOUBLE, "cvlf",CVLF,U(LONG,FLOAT), "cvld",CVLF,U(LONG,DOUBLE), "cvfl",CVFL,U(FLOAT,LONG), "cvdl",CVFL,U(DOUBLE,LONG), "ldfd",LDFD,U(FLOAT,DOUBLE), "cvdf",CVDF,U(DOUBLE,FLOAT), "negf",NEGF,FLOAT, "negd",NEGF,DOUBLE, "addf",ADDF,FLOAT, "addd",ADDF,DOUBLE, "subf",SUBF,FLOAT, "subd",SUBF,DOUBLE, "mulf",MULF,FLOAT, "muld",MULF,DOUBLE, "divf",DIVF,FLOAT, "divd",DIVF,DOUBLE, "sinf",SINF,FLOAT, "cosf",COSF,FLOAT, "atanf",ATANF,FLOAT, "logf",LOGF,FLOAT, "sqrtf",SQRTF,FLOAT, "expf",EXPF,FLOAT, ".globl",EROU,0, ".text",TEXT,0, ".data",DATA,0, ".bss",BSS,0, ".align",ALIGN,0, ".word",WGEN,0, ".long",LGEN,0, ".set",SET,0, ".lcomm",LCOMM,0, ".comm",COMM,0, ".end",END,0, "mfpr",MFPR,LONG, "mtpr",MTPR,LONG, "probe",PROBE,BYTE, "adwc",NIL,0, "movob",MOVO,BYTE, "movow",MOVO,WORD, "bbssi",NIL,0, "bicpsw",NIL,0, "bispsw",NIL,0, "bpt",NIL,0, "btcs",NIL,0, "cmps2",NIL,0, "cmps3",NIL,0, "emul",NIL,0, "ffc",NIL,0, "ffs",NIL,0, "halt",NIL,0, "insque",NIL,0, "kcall",NIL,0, "ldpctx",NIL,0, "loadr",NIL,0, "movpsl",NIL,0, "movs2",NIL,0, "movs3",NIL,0, "nop",NIL,0, "rei",NIL,0, "remque",NIL,0, "sbwc",NIL,0, "storer",NIL,0, "svpctx",NIL,0, "sinf",NIL,0, "cosf",NIL,0, "atanf",NIL,0, "logf",NIL,0, "sqrtf",NIL,0, "expf",NIL,0, {0}};