char c22
[] = "@(#)c22.c 1.5 78/09/23 16:37:33";
readonly
char revbr
[] = {
JNE
, JEQ
, JGT
, JLT
, JGE
, JLE
,
JNE
, JEQ
, JHI
, JLO
, JHIS
, JLOS
,
JBS
, JBC
, JLBS
, JLBC
, JBSC
, JBCC
, JBSS
, JBCS
};
/* cursed be the preprocessor, whose impotence and stupidity
/* prevented this table being macro-generated from ../as/instrs
readonly
struct optab optab
[] = {
"addb2",T(ADD
,U(BYTE
,OP2
)),
"addb3",T(ADD
,U(BYTE
,OP3
)),
"addd2",T(ADD
,U(DOUBLE
,OP2
)),
"addd3",T(ADD
,U(DOUBLE
,OP3
)),
"addf2",T(ADD
,U(FLOAT
,OP2
)),
"addf3",T(ADD
,U(FLOAT
,OP3
)),
"addl2",T(ADD
,U(LONG
,OP2
)),
"addl3",T(ADD
,U(LONG
,OP3
)),
"addw2",T(ADD
,U(WORD
,OP2
)),
"addw3",T(ADD
,U(WORD
,OP3
)),
"bicb2",T(BIC
,U(BYTE
,OP2
)),
"bicb3",T(BIC
,U(BYTE
,OP3
)),
"bicl2",T(BIC
,U(LONG
,OP2
)),
"bicl3",T(BIC
,U(LONG
,OP3
)),
"bicw2",T(BIC
,U(WORD
,OP2
)),
"bicw3",T(BIC
,U(WORD
,OP3
)),
"bisb2",T(BIS
,U(BYTE
,OP2
)),
"bisb3",T(BIS
,U(BYTE
,OP3
)),
"bisl2",T(BIS
,U(LONG
,OP2
)),
"bisl3",T(BIS
,U(LONG
,OP3
)),
"bisw2",T(BIS
,U(WORD
,OP2
)),
"bisw3",T(BIS
,U(WORD
,OP3
)),
"cvtbd",T(CVT
,U(BYTE
,DOUBLE
)),
"cvtbf",T(CVT
,U(BYTE
,FLOAT
)),
"cvtbl",T(CVT
,U(BYTE
,LONG
)),
"cvtbw",T(CVT
,U(BYTE
,WORD
)),
"cvtdb",T(CVT
,U(DOUBLE
,BYTE
)),
"cvtdf",T(CVT
,U(DOUBLE
,FLOAT
)),
"cvtdl",T(CVT
,U(DOUBLE
,LONG
)),
"cvtdw",T(CVT
,U(DOUBLE
,WORD
)),
"cvtfb",T(CVT
,U(FLOAT
,BYTE
)),
"cvtfd",T(CVT
,U(FLOAT
,DOUBLE
)),
"cvtfl",T(CVT
,U(FLOAT
,LONG
)),
"cvtfw",T(CVT
,U(FLOAT
,WORD
)),
"cvtlb",T(CVT
,U(LONG
,BYTE
)),
"cvtld",T(CVT
,U(LONG
,DOUBLE
)),
"cvtlf",T(CVT
,U(LONG
,FLOAT
)),
"cvtlw",T(CVT
,U(LONG
,WORD
)),
"cvtrdl",T(CVT
,U(DOUBLE
,LONG
)),
"cvtrfl",T(CVT
,U(FLOAT
,LONG
)),
"cvtwb",T(CVT
,U(WORD
,BYTE
)),
"cvtwd",T(CVT
,U(WORD
,DOUBLE
)),
"cvtwf",T(CVT
,U(WORD
,FLOAT
)),
"cvtwl",T(CVT
,U(WORD
,LONG
)),
"divb2",T(DIV
,U(BYTE
,OP2
)),
"divb3",T(DIV
,U(BYTE
,OP3
)),
"divd2",T(DIV
,U(DOUBLE
,OP2
)),
"divd3",T(DIV
,U(DOUBLE
,OP3
)),
"divf2",T(DIV
,U(FLOAT
,OP2
)),
"divf3",T(DIV
,U(FLOAT
,OP3
)),
"divl2",T(DIV
,U(LONG
,OP2
)),
"divl3",T(DIV
,U(LONG
,OP3
)),
"divw2",T(DIV
,U(WORD
,OP2
)),
"divw3",T(DIV
,U(WORD
,OP3
)),
"movzbl",T(MOVZ
,U(BYTE
,LONG
)),
"movzbw",T(MOVZ
,U(BYTE
,WORD
)),
"movzwl",T(MOVZ
,U(WORD
,LONG
)),
"mulb2",T(MUL
,U(BYTE
,OP2
)),
"mulb3",T(MUL
,U(BYTE
,OP3
)),
"muld2",T(MUL
,U(DOUBLE
,OP2
)),
"muld3",T(MUL
,U(DOUBLE
,OP3
)),
"mulf2",T(MUL
,U(FLOAT
,OP2
)),
"mulf3",T(MUL
,U(FLOAT
,OP3
)),
"mull2",T(MUL
,U(LONG
,OP2
)),
"mull3",T(MUL
,U(LONG
,OP3
)),
"mulw2",T(MUL
,U(WORD
,OP2
)),
"mulw3",T(MUL
,U(WORD
,OP3
)),
"pushad",T(PUSHA
,DOUBLE
),
"subb2",T(SUB
,U(BYTE
,OP2
)),
"subb3",T(SUB
,U(BYTE
,OP3
)),
"subd2",T(SUB
,U(DOUBLE
,OP2
)),
"subd3",T(SUB
,U(DOUBLE
,OP3
)),
"subf2",T(SUB
,U(FLOAT
,OP2
)),
"subf3",T(SUB
,U(FLOAT
,OP3
)),
"subl2",T(SUB
,U(LONG
,OP2
)),
"subl3",T(SUB
,U(LONG
,OP3
)),
"subw2",T(SUB
,U(WORD
,OP2
)),
"subw3",T(SUB
,U(WORD
,OP3
)),
"xorb2",T(XOR
,U(BYTE
,OP2
)),
"xorb3",T(XOR
,U(BYTE
,OP3
)),
"xorl2",T(XOR
,U(LONG
,OP2
)),
"xorl3",T(XOR
,U(LONG
,OP3
)),
"xorw2",T(XOR
,U(WORD
,OP2
)),
"xorw3",T(XOR
,U(WORD
,OP3
)),