Back to index

cell-binutils  2.17cvs20070401
ns32k.h
Go to the documentation of this file.
00001 /* ns32k-opcode.h -- Opcode table for National Semi 32k processor
00002    Copyright 1987, 1991, 1994, 2002 Free Software Foundation, Inc.
00003 
00004 This file is part of GAS, the GNU Assembler.
00005 
00006 GAS is free software; you can redistribute it and/or modify
00007 it under the terms of the GNU General Public License as published by
00008 the Free Software Foundation; either version 1, or (at your option)
00009 any later version.
00010 
00011 GAS is distributed in the hope that it will be useful,
00012 but WITHOUT ANY WARRANTY; without even the implied warranty of
00013 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00014 GNU General Public License for more details.
00015 
00016 You should have received a copy of the GNU General Public License
00017 along with GAS; see the file COPYING.  If not, write to
00018 the Free Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.  */
00019 
00020 
00021 #ifdef SEQUENT_COMPATABILITY
00022 #define DEF_MODEC 20
00023 #define DEF_MODEL 21
00024 #endif
00025 
00026 #ifndef DEF_MODEC
00027 #define DEF_MODEC 20
00028 #endif
00029 
00030 #ifndef DEF_MODEL
00031 #define DEF_MODEL 20
00032 #endif
00033 /*
00034    After deciding the instruction entry (via hash.c) the instruction parser
00035    will try to match the operands after the instruction to the required set
00036    given in the entry operandfield. Every operand will result in a change in
00037    the opcode or the addition of data to the opcode.
00038    The operands in the source instruction are checked for inconsistent
00039    semantics.
00040 
00041        F : 32 bit float     general form
00042        L : 64 bit float         "
00043        B : byte                 "
00044        W : word                 "
00045        D : double-word                 "
00046        A : double-word             gen-address-form ie no regs, no immediate
00047        I : integer writeable   gen int except immediate (A + reg)
00048        Z : floating writeable      gen float except immediate (Z + freg)
00049        d : displacement
00050        b : displacement - pc relative addressing  acb
00051        p : displacement - pc relative addressing  br bcond bsr cxp
00052        q : quick
00053        i : immediate (8 bits)
00054            This is not a standard ns32k operandtype, it is used to build
00055            instructions like    svc arg1,arg2
00056            Svc is the instruction SuperVisorCall and is sometimes used to
00057            call OS-routines from usermode. Some args might be handy!
00058        r : register number (3 bits)
00059        O : setcfg instruction optionslist
00060        C : cinv instruction optionslist
00061        S : stringinstruction optionslist
00062        U : registerlist     save,enter
00063        u : registerlist     restore,exit
00064        M : mmu register
00065        P : cpu register
00066        g : 3:rd operand of inss or exts instruction
00067        G : 4:th operand of inss or exts instruction
00068            Those operands are encoded in the same byte.
00069            This byte is placed last in the instruction.
00070        f : operand of sfsr
00071        H : sequent-hack for bsr (Warning)
00072 
00073 column 1      instructions
00074        2      number of bits in opcode.
00075        3      number of bits in opcode explicitly
00076               determined by the instruction type.
00077        4      opcodeseed, the number we build our opcode
00078               from.
00079        5      operandtypes, used by operandparser.
00080        6      size in bytes of immediate
00081 */
00082 struct ns32k_opcode {
00083   const char *name;
00084   unsigned char opcode_id_size; /* not used by the assembler */
00085   unsigned char opcode_size;
00086   unsigned long opcode_seed;
00087   const char *operands;
00088   unsigned char im_size;    /* not used by dissassembler */
00089   const char *default_args; /* default to those args when none given */
00090   char default_modec;              /* default to this addr-mode when ambigous
00091                                ie when the argument of a general addr-mode
00092                                is a plain constant */
00093   char default_model;              /* is a plain label */
00094 };
00095 
00096 #ifdef comment
00097 /* This section was from the gdb version of this file. */
00098 
00099 #ifndef ns32k_opcodeT
00100 #define ns32k_opcodeT int
00101 #endif /* no ns32k_opcodeT */
00102 
00103 struct not_wot                     /* ns32k opcode table: wot to do with this */
00104                             /* particular opcode */
00105 {
00106   int obits;                /* number of opcode bits */
00107   int ibits;                /* number of instruction bits */
00108   ns32k_opcodeT code;              /* op-code (may be > 8 bits!) */
00109   const char *args;         /* how to compile said opcode */
00110 };
00111 
00112 struct not                  /* ns32k opcode text */
00113 {
00114   const char *name;         /* opcode name: lowercase string  [key]  */
00115   struct not_wot detail;    /* rest of opcode table          [datum] */
00116 };
00117 
00118 /* Instructions look like this:
00119 
00120    basic instruction--1, 2, or 3 bytes
00121    index byte for operand A, if operand A is indexed--1 byte
00122    index byte for operand B, if operand B is indexed--1 byte
00123    addressing extension for operand A
00124    addressing extension for operand B
00125    implied operands
00126 
00127    Operand A is the operand listed first in the following opcode table.
00128    Operand B is the operand listed second in the following opcode table.
00129    All instructions have at most 2 general operands, so this is enough.
00130    The implied operands are associated with operands other than A and B.
00131 
00132    Each operand has a digit and a letter.
00133 
00134    The digit gives the position in the assembly language.  The letter,
00135    one of the following, tells us what kind of operand it is.  */
00136 
00137 /* F : 32 bit float
00138  * L : 64 bit float
00139  * B : byte
00140  * W : word
00141  * D : double-word
00142  * I : integer not immediate
00143  * Z : floating not immediate
00144  * d : displacement
00145  * q : quick
00146  * i : immediate (8 bits)
00147  * r : register number (3 bits)
00148  * p : displacement - pc relative addressing
00149 */
00150 
00151 
00152 #endif /* comment */
00153 
00154 static const struct ns32k_opcode ns32k_opcodes[]=
00155 {
00156   { "absf",   14,24, 0x35be,       "1F2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00157   { "absl",   14,24, 0x34be,       "1L2Z",              8,     "",    DEF_MODEC,DEF_MODEL  },
00158   { "absb",   14,24, 0x304e, "1B2I",             1,     "",    DEF_MODEC,DEF_MODEL  },
00159   { "absw",   14,24, 0x314e, "1W2I",             2,     "",    DEF_MODEC,DEF_MODEL  },
00160   { "absd",   14,24, 0x334e, "1D2I",             4,     "",    DEF_MODEC,DEF_MODEL  },
00161   { "acbb",    7,16, 0x4c,  "2I1q3p",     1,     "",    DEF_MODEC,DEF_MODEL  },
00162   { "acbw",    7,16, 0x4d,  "2I1q3p",     2,     "",    DEF_MODEC,DEF_MODEL  },
00163   { "acbd",    7,16, 0x4f,  "2I1q3p",     4,     "",    DEF_MODEC,DEF_MODEL  },
00164   { "addf",   14,24, 0x01be,       "1F2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00165   { "addl",   14,24, 0x00be, "1L2Z",             8,     "",    DEF_MODEC,DEF_MODEL  },
00166   { "addb",    6,16, 0x00,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00167   { "addw",    6,16, 0x01,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00168   { "addd",    6,16, 0x03,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00169   { "addcb",   6,16, 0x10,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00170   { "addcw",   6,16, 0x11,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00171   { "addcd",   6,16, 0x13,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00172   { "addpb",  14,24, 0x3c4e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00173   { "addpw",  14,24, 0x3d4e,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00174   { "addpd",  14,24, 0x3f4e,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00175   { "addqb",   7,16, 0x0c,  "2I1q",              1,     "",    DEF_MODEC,DEF_MODEL  },
00176   { "addqw",   7,16, 0x0d,  "2I1q",              2,     "",    DEF_MODEC,DEF_MODEL  },
00177   { "addqd",   7,16, 0x0f,  "2I1q",              4,     "",    DEF_MODEC,DEF_MODEL  },
00178   { "addr",    6,16, 0x27,  "1A2I",              4,     "",    21,21  },
00179   { "adjspb", 11,16, 0x057c,       "1B",         1,     "",    DEF_MODEC,DEF_MODEL  },
00180   { "adjspw", 11,16, 0x057d,       "1W",         2,     "",    DEF_MODEC,DEF_MODEL  },
00181   { "adjspd", 11,16, 0x057f,       "1D",         4,     "",    DEF_MODEC,DEF_MODEL  },
00182   { "andb",    6,16, 0x28,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00183   { "andw",    6,16, 0x29,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00184   { "andd",    6,16, 0x2b,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00185   { "ashb",   14,24, 0x044e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00186   { "ashw",   14,24, 0x054e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00187   { "ashd",   14,24, 0x074e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00188   { "beq",     8,8,  0x0a,  "1p",         0,     "",    21,21  },
00189   { "bne",     8,8,  0x1a,  "1p",         0,     "",    21,21  },
00190   { "bcs",     8,8,  0x2a,  "1p",         0,     "",    21,21  },
00191   { "bcc",     8,8,  0x3a,  "1p",         0,     "",    21,21  },
00192   { "bhi",     8,8,  0x4a,  "1p",         0,     "",    21,21  },
00193   { "bls",     8,8,  0x5a,  "1p",         0,     "",    21,21  },
00194   { "bgt",     8,8,  0x6a,  "1p",         0,     "",    21,21  },
00195   { "ble",     8,8,  0x7a,  "1p",         0,     "",    21,21  },
00196   { "bfs",     8,8,  0x8a,  "1p",         0,     "",    21,21  },
00197   { "bfc",     8,8,  0x9a,  "1p",         0,     "",    21,21  },
00198   { "blo",     8,8,  0xaa,  "1p",         0,     "",    21,21  },
00199   { "bhs",     8,8,  0xba,  "1p",         0,     "",    21,21  },
00200   { "blt",     8,8,  0xca,  "1p",         0,     "",    21,21  },
00201   { "bge",     8,8,  0xda,  "1p",         0,     "",    21,21  },
00202   { "but",     8,8,  0xea,  "1p",         0,     "",    21,21  },
00203   { "buf",     8,8,  0xfa,  "1p",         0,     "",    21,21  },
00204   { "bicb",    6,16, 0x08,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00205   { "bicw",    6,16, 0x09,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00206   { "bicd",    6,16, 0x0b,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00207   { "bicpsrb",       11,16, 0x17c, "1B",         1,     "",    DEF_MODEC,DEF_MODEL  },
00208   { "bicpsrw",       11,16, 0x17d, "1W",         2,     "",    DEF_MODEC,DEF_MODEL  },
00209   { "bispsrb",       11,16, 0x37c, "1B",         1,     "",    DEF_MODEC,DEF_MODEL  },
00210   { "bispsrw",       11,16, 0x37d, "1W",         2,     "",    DEF_MODEC,DEF_MODEL  },
00211   { "bpt",     8,8,  0xf2,  "",           0,     "",    DEF_MODEC,DEF_MODEL  },
00212   { "br",      8,8,  0xea,  "1p",         0,     "",    21,21  },
00213 #ifdef SEQUENT_COMPATABILITY
00214   { "bsr",     8,8,  0x02,  "1H",         0,     "",    21,21  },
00215 #else
00216   { "bsr",     8,8,  0x02,  "1p",         0,     "",    21,21  },
00217 #endif
00218   { "caseb",  11,16, 0x77c, "1B",         1,     "",    DEF_MODEC,DEF_MODEL  },
00219   { "casew",  11,16, 0x77d, "1W",         2,     "",    DEF_MODEC,DEF_MODEL  },
00220   { "cased",  11,16, 0x77f, "1D",         4,     "",    DEF_MODEC,DEF_MODEL  },
00221   { "cbitb",  14,24, 0x084e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00222   { "cbitw",  14,24, 0x094e,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00223   { "cbitd",  14,24, 0x0b4e,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00224   { "cbitib", 14,24, 0x0c4e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00225   { "cbitiw", 14,24, 0x0d4e,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00226   { "cbitid", 14,24, 0x0f4e,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00227   { "checkb", 11,24, 0x0ee, "2A3B1r",     1,     "",    DEF_MODEC,DEF_MODEL  },
00228   { "checkw", 11,24, 0x1ee, "2A3W1r",     2,     "",    DEF_MODEC,DEF_MODEL  },
00229   { "checkd", 11,24, 0x3ee, "2A3D1r",     4,     "",    DEF_MODEC,DEF_MODEL  },
00230   { "cinv",   14,24, 0x271e,       "2D1C",              4,     "",    DEF_MODEC,DEF_MODEL  },
00231   { "cmpf",   14,24, 0x09be,       "1F2F",              4,     "",    DEF_MODEC,DEF_MODEL  },
00232   { "cmpl",   14,24, 0x08be,       "1L2L",              8,     "",    DEF_MODEC,DEF_MODEL  },
00233   { "cmpb",    6,16, 0x04,  "1B2B",              1,     "",    DEF_MODEC,DEF_MODEL  },
00234   { "cmpw",    6,16, 0x05,  "1W2W",              2,     "",    DEF_MODEC,DEF_MODEL  },
00235   { "cmpd",    6,16, 0x07,  "1D2D",              4,     "",    DEF_MODEC,DEF_MODEL  },
00236   { "cmpmb",  14,24, 0x04ce,       "1A2A3b",     1,     "",    DEF_MODEC,DEF_MODEL  },
00237   { "cmpmw",  14,24, 0x05ce,       "1A2A3b",     2,     "",    DEF_MODEC,DEF_MODEL  },
00238   { "cmpmd",  14,24, 0x07ce,       "1A2A3b",     4,     "",    DEF_MODEC,DEF_MODEL  },
00239   { "cmpqb",   7,16, 0x1c,  "2B1q",              1,     "",    DEF_MODEC,DEF_MODEL  },
00240   { "cmpqw",   7,16, 0x1d,  "2W1q",              2,     "",    DEF_MODEC,DEF_MODEL  },
00241   { "cmpqd",   7,16, 0x1f,  "2D1q",              4,     "",    DEF_MODEC,DEF_MODEL  },
00242   { "cmpsb",  16,24, 0x040e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00243   { "cmpsw",  16,24, 0x050e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00244   { "cmpsd",  16,24, 0x070e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00245   { "cmpst",  16,24, 0x840e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00246   { "comb",   14,24, 0x344e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00247   { "comw",   14,24, 0x354e,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00248   { "comd",   14,24, 0x374e,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00249   { "cvtp",   11,24, 0x036e,       "2A3D1r",     4,     "",    DEF_MODEC,DEF_MODEL  },
00250   { "cxp",     8,8,  0x22,  "1p",         0,     "",    21,21  },
00251   { "cxpd",   11,16, 0x07f, "1A",         4,     "",    DEF_MODEC,DEF_MODEL  },
00252   { "deib",   14,24, 0x2cce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00253   { "deiw",   14,24, 0x2dce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00254   { "deid",   14,24, 0x2fce,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00255   { "dia",     8,8,  0xc2,  "",           1,     "",    DEF_MODEC,DEF_MODEL  },
00256   { "divf",   14,24, 0x21be,       "1F2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00257   { "divl",   14,24, 0x20be,       "1L2Z",              8,     "",    DEF_MODEC,DEF_MODEL  },
00258   { "divb",   14,24, 0x3cce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00259   { "divw",   14,24, 0x3dce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00260   { "divd",   14,24, 0x3fce,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00261   { "enter",   8,8,  0x82,  "1U2d",              0,     "",    DEF_MODEC,DEF_MODEL  },
00262   { "exit",    8,8,  0x92,  "1u",         0,     "",    DEF_MODEC,DEF_MODEL  },
00263   { "extb",   11,24, 0x02e, "2I3B1r4d",   1,     "",    DEF_MODEC,DEF_MODEL  },
00264   { "extw",   11,24, 0x12e, "2I3W1r4d",   2,     "",    DEF_MODEC,DEF_MODEL  },
00265   { "extd",   11,24, 0x32e, "2I3D1r4d",   4,     "",    DEF_MODEC,DEF_MODEL  },
00266   { "extsb",  14,24, 0x0cce,       "1I2I4G3g",   1,     "",    DEF_MODEC,DEF_MODEL  },
00267   { "extsw",  14,24, 0x0dce,       "1I2I4G3g",   2,     "",    DEF_MODEC,DEF_MODEL  },
00268   { "extsd",  14,24, 0x0fce,       "1I2I4G3g",   4,     "",    DEF_MODEC,DEF_MODEL  },
00269   { "ffsb",   14,24, 0x046e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00270   { "ffsw",   14,24, 0x056e,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00271   { "ffsd",   14,24, 0x076e,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00272   { "flag",    8,8,  0xd2,  "",           0,     "",    DEF_MODEC,DEF_MODEL  },
00273   { "floorfb",       14,24, 0x3c3e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00274   { "floorfw",       14,24, 0x3d3e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00275   { "floorfd",       14,24, 0x3f3e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00276   { "floorlb",       14,24, 0x383e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00277   { "floorlw",       14,24, 0x393e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00278   { "floorld",       14,24, 0x3b3e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00279   { "ibitb",  14,24, 0x384e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00280   { "ibitw",  14,24, 0x394e,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00281   { "ibitd",  14,24, 0x3b4e,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00282   { "indexb", 11,24, 0x42e, "2B3B1r",     1,     "",    DEF_MODEC,DEF_MODEL  },
00283   { "indexw", 11,24, 0x52e, "2W3W1r",     2,     "",    DEF_MODEC,DEF_MODEL  },
00284   { "indexd", 11,24, 0x72e, "2D3D1r",     4,     "",    DEF_MODEC,DEF_MODEL  },
00285   { "insb",   11,24, 0x0ae, "2B3I1r4d",   1,     "",    DEF_MODEC,DEF_MODEL  },
00286   { "insw",   11,24, 0x1ae, "2W3I1r4d",   2,     "",    DEF_MODEC,DEF_MODEL  },
00287   { "insd",   11,24, 0x3ae, "2D3I1r4d",   4,     "",    DEF_MODEC,DEF_MODEL  },
00288   { "inssb",  14,24, 0x08ce,       "1B2I4G3g",   1,     "",    DEF_MODEC,DEF_MODEL  },
00289   { "inssw",  14,24, 0x09ce,       "1W2I4G3g",   2,     "",    DEF_MODEC,DEF_MODEL  },
00290   { "inssd",  14,24, 0x0bce,       "1D2I4G3g",   4,     "",    DEF_MODEC,DEF_MODEL  },
00291   { "jsr",    11,16, 0x67f, "1A",         4,     "",    21,21  },
00292   { "jump",   11,16, 0x27f, "1A",         4,     "",    21,21  },
00293   { "lfsr",   19,24, 0x00f3e,"1D",        4,     "",    DEF_MODEC,DEF_MODEL  },
00294   { "lmr",    15,24, 0x0b1e,       "2D1M",              4,     "",    DEF_MODEC,DEF_MODEL  },
00295   { "lprb",    7,16, 0x6c,  "2B1P",              1,     "",    DEF_MODEC,DEF_MODEL  },
00296   { "lprw",    7,16, 0x6d,  "2W1P",              2,     "",    DEF_MODEC,DEF_MODEL  },
00297   { "lprd",    7,16, 0x6f,  "2D1P",              4,     "",    DEF_MODEC,DEF_MODEL  },
00298   { "lshb",   14,24, 0x144e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00299   { "lshw",   14,24, 0x154e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00300   { "lshd",   14,24, 0x174e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00301   { "meib",   14,24, 0x24ce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00302   { "meiw",   14,24, 0x25ce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00303   { "meid",   14,24, 0x27ce,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00304   { "modb",   14,24, 0x38ce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00305   { "modw",   14,24, 0x39ce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00306   { "modd",   14,24, 0x3bce,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00307   { "movf",   14,24, 0x05be,       "1F2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00308   { "movl",   14,24, 0x04be,       "1L2Z",              8,     "",    DEF_MODEC,DEF_MODEL  },
00309   { "movb",    6,16, 0x14,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00310   { "movw",    6,16, 0x15,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00311   { "movd",    6,16, 0x17,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00312   { "movbf",  14,24, 0x043e,       "1B2Z",              1,     "",    DEF_MODEC,DEF_MODEL  },
00313   { "movwf",  14,24, 0x053e,       "1W2Z",              2,     "",    DEF_MODEC,DEF_MODEL  },
00314   { "movdf",  14,24, 0x073e,       "1D2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00315   { "movbl",  14,24, 0x003e,       "1B2Z",              1,     "",    DEF_MODEC,DEF_MODEL  },
00316   { "movwl",  14,24, 0x013e,       "1W2Z",              2,     "",    DEF_MODEC,DEF_MODEL  },
00317   { "movdl",  14,24, 0x033e,       "1D2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00318   { "movfl",  14,24, 0x1b3e,       "1F2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00319   { "movlf",  14,24, 0x163e,       "1L2Z",              8,     "",    DEF_MODEC,DEF_MODEL  },
00320   { "movmb",  14,24, 0x00ce,       "1A2A3b",     1,     "",    DEF_MODEC,DEF_MODEL  },
00321   { "movmw",  14,24, 0x01ce,       "1A2A3b",     2,     "",    DEF_MODEC,DEF_MODEL  },
00322   { "movmd",  14,24, 0x03ce,       "1A2A3b",     4,     "",    DEF_MODEC,DEF_MODEL  },
00323   { "movqb",   7,16, 0x5c,  "2I1q",              1,     "",    DEF_MODEC,DEF_MODEL  },
00324   { "movqw",   7,16, 0x5d,  "2I1q",              2,     "",    DEF_MODEC,DEF_MODEL  },
00325   { "movqd",   7,16, 0x5f,  "2I1q",              4,     "",    DEF_MODEC,DEF_MODEL  },
00326   { "movsb",  16,24, 0x000e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00327   { "movsw",  16,24, 0x010e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00328   { "movsd",  16,24, 0x030e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00329   { "movst",  16,24, 0x800e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00330   { "movsub", 14,24, 0x0cae,       "1A2A",              1,     "",    DEF_MODEC,DEF_MODEL  },
00331   { "movsuw", 14,24, 0x0dae,       "1A2A",              2,     "",    DEF_MODEC,DEF_MODEL  },
00332   { "movsud", 14,24, 0x0fae,       "1A2A",              4,     "",    DEF_MODEC,DEF_MODEL  },
00333   { "movusb", 14,24, 0x1cae,       "1A2A",              1,     "",    DEF_MODEC,DEF_MODEL  },
00334   { "movusw", 14,24, 0x1dae,       "1A2A",              2,     "",    DEF_MODEC,DEF_MODEL  },
00335   { "movusd", 14,24, 0x1fae,       "1A2A",              4,     "",    DEF_MODEC,DEF_MODEL  },
00336   { "movxbd", 14,24, 0x1cce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00337   { "movxwd", 14,24, 0x1dce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00338   { "movxbw", 14,24, 0x10ce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00339   { "movzbd", 14,24, 0x18ce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00340   { "movzwd", 14,24, 0x19ce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00341   { "movzbw", 14,24, 0x14ce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00342   { "mulf",   14,24, 0x31be,       "1F2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00343   { "mull",   14,24, 0x30be,       "1L2Z",              8,     "",    DEF_MODEC,DEF_MODEL  },
00344   { "mulb",   14,24, 0x20ce, "1B2I",             1,     "",    DEF_MODEC,DEF_MODEL  },
00345   { "mulw",   14,24, 0x21ce, "1W2I",             2,     "",    DEF_MODEC,DEF_MODEL  },
00346   { "muld",   14,24, 0x23ce, "1D2I",             4,     "",    DEF_MODEC,DEF_MODEL  },
00347   { "negf",   14,24, 0x15be, "1F2Z",             4,     "",    DEF_MODEC,DEF_MODEL  },
00348   { "negl",   14,24, 0x14be, "1L2Z",             8,     "",    DEF_MODEC,DEF_MODEL  },
00349   { "negb",   14,24, 0x204e, "1B2I",             1,     "",    DEF_MODEC,DEF_MODEL  },
00350   { "negw",   14,24, 0x214e, "1W2I",             2,     "",    DEF_MODEC,DEF_MODEL  },
00351   { "negd",   14,24, 0x234e, "1D2I",             4,     "",    DEF_MODEC,DEF_MODEL  },
00352   { "nop",     8,8,  0xa2,  "",           0,     "",    DEF_MODEC,DEF_MODEL  },
00353   { "notb",   14,24, 0x244e, "1B2I",             1,     "",    DEF_MODEC,DEF_MODEL  },
00354   { "notw",   14,24, 0x254e, "1W2I",             2,     "",    DEF_MODEC,DEF_MODEL  },
00355   { "notd",   14,24, 0x274e, "1D2I",             4,     "",    DEF_MODEC,DEF_MODEL  },
00356   { "orb",     6,16, 0x18,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00357   { "orw",     6,16, 0x19,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00358   { "ord",     6,16, 0x1b,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00359   { "quob",   14,24, 0x30ce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00360   { "quow",   14,24, 0x31ce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00361   { "quod",   14,24, 0x33ce,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00362   { "rdval",  19,24, 0x0031e,"1A",        4,     "",    DEF_MODEC,DEF_MODEL  },
00363   { "remb",   14,24, 0x34ce,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00364   { "remw",   14,24, 0x35ce,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00365   { "remd",   14,24, 0x37ce,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00366   { "restore",        8,8,  0x72,  "1u",         0,     "",    DEF_MODEC,DEF_MODEL  },
00367   { "ret",     8,8,  0x12,  "1d",         0,     "",    DEF_MODEC,DEF_MODEL  },
00368   { "reti",    8,8,  0x52,  "",           0,     "",    DEF_MODEC,DEF_MODEL  },
00369   { "rett",    8,8,  0x42,  "1d",         0,     "",    DEF_MODEC,DEF_MODEL  },
00370   { "rotb",   14,24, 0x004e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00371   { "rotw",   14,24, 0x014e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00372   { "rotd",   14,24, 0x034e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00373   { "roundfb",       14,24, 0x243e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00374   { "roundfw",       14,24, 0x253e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00375   { "roundfd",       14,24, 0x273e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00376   { "roundlb",       14,24, 0x203e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00377   { "roundlw",       14,24, 0x213e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00378   { "roundld",       14,24, 0x233e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00379   { "rxp",     8,8,  0x32,  "1d",         0,     "",    DEF_MODEC,DEF_MODEL  },
00380   { "seqb",   11,16, 0x3c,  "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00381   { "seqw",   11,16, 0x3d,  "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00382   { "seqd",   11,16, 0x3f,  "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00383   { "sneb",   11,16, 0xbc,  "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00384   { "snew",   11,16, 0xbd,  "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00385   { "sned",   11,16, 0xbf,  "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00386   { "scsb",   11,16, 0x13c, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00387   { "scsw",   11,16, 0x13d, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00388   { "scsd",   11,16, 0x13f, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00389   { "sccb",   11,16, 0x1bc, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00390   { "sccw",   11,16, 0x1bd, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00391   { "sccd",   11,16, 0x1bf, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00392   { "shib",   11,16, 0x23c, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00393   { "shiw",   11,16, 0x23d, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00394   { "shid",   11,16, 0x23f, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00395   { "slsb",   11,16, 0x2bc, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00396   { "slsw",   11,16, 0x2bd, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00397   { "slsd",   11,16, 0x2bf, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00398   { "sgtb",   11,16, 0x33c, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00399   { "sgtw",   11,16, 0x33d, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00400   { "sgtd",   11,16, 0x33f, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00401   { "sleb",   11,16, 0x3bc, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00402   { "slew",   11,16, 0x3bd, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00403   { "sled",   11,16, 0x3bf, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00404   { "sfsb",   11,16, 0x43c, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00405   { "sfsw",   11,16, 0x43d, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00406   { "sfsd",   11,16, 0x43f, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00407   { "sfcb",   11,16, 0x4bc, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00408   { "sfcw",   11,16, 0x4bd, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00409   { "sfcd",   11,16, 0x4bf, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00410   { "slob",   11,16, 0x53c, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00411   { "slow",   11,16, 0x53d, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00412   { "slod",   11,16, 0x53f, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00413   { "shsb",   11,16, 0x5bc, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00414   { "shsw",   11,16, 0x5bd, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00415   { "shsd",   11,16, 0x5bf, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00416   { "sltb",   11,16, 0x63c, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00417   { "sltw",   11,16, 0x63d, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00418   { "sltd",   11,16, 0x63f, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00419   { "sgeb",   11,16, 0x6bc, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00420   { "sgew",   11,16, 0x6bd, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00421   { "sged",   11,16, 0x6bf, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00422   { "sutb",   11,16, 0x73c, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00423   { "sutw",   11,16, 0x73d, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00424   { "sutd",   11,16, 0x73f, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00425   { "sufb",   11,16, 0x7bc, "1B",         0,     "",    DEF_MODEC,DEF_MODEL  },
00426   { "sufw",   11,16, 0x7bd, "1W",         0,     "",    DEF_MODEC,DEF_MODEL  },
00427   { "sufd",   11,16, 0x7bf, "1D",         0,     "",    DEF_MODEC,DEF_MODEL  },
00428   { "save",    8,8,  0x62,  "1U",         0,     "",    DEF_MODEC,DEF_MODEL  },
00429   { "sbitb",    14,24,      0x184e,       "1B2A",              1,     "",    DEF_MODEC,DEF_MODEL  },
00430   { "sbitw",  14,24, 0x194e,       "1W2A",              2,     "",    DEF_MODEC,DEF_MODEL  },
00431   { "sbitd",  14,24, 0x1b4e,       "1D2A",              4,     "",    DEF_MODEC,DEF_MODEL  },
00432   { "sbitib", 14,24, 0x1c4e,       "1B2A",              1,     "",    DEF_MODEC,DEF_MODEL  },
00433   { "sbitiw", 14,24, 0x1d4e,       "1W2A",              2,     "",    DEF_MODEC,DEF_MODEL  },
00434   { "sbitid", 14,24, 0x1f4e,       "1D2A",              4,     "",    DEF_MODEC,DEF_MODEL  },
00435   { "setcfg", 15,24, 0x0b0e,       "1O",         0,     "",    DEF_MODEC,DEF_MODEL  },
00436   { "sfsr",   14,24, 0x373e,       "1f",         0,     "",    DEF_MODEC,DEF_MODEL  },
00437   { "skpsb",  16,24, 0x0c0e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00438   { "skpsw",  16,24, 0x0d0e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00439   { "skpsd",  16,24, 0x0f0e, "1S",        0,     "[]",  DEF_MODEC,DEF_MODEL  },
00440   { "skpst",  16,24, 0x8c0e,       "1S",         0,     "[]",  DEF_MODEC,DEF_MODEL  },
00441   { "smr",    15,24, 0x0f1e,       "2I1M",              4,     "",    DEF_MODEC,DEF_MODEL  },
00442   { "sprb",    7,16, 0x2c,  "2I1P",              1,     "",    DEF_MODEC,DEF_MODEL  },
00443   { "sprw",    7,16, 0x2d,  "2I1P",              2,     "",    DEF_MODEC,DEF_MODEL  },
00444   { "sprd",    7,16, 0x2f,  "2I1P",              4,     "",    DEF_MODEC,DEF_MODEL  },
00445   { "subf",   14,24, 0x11be,       "1F2Z",              4,     "",    DEF_MODEC,DEF_MODEL  },
00446   { "subl",   14,24, 0x10be,       "1L2Z",              8,     "",    DEF_MODEC,DEF_MODEL  },
00447   { "subb",    6,16, 0x20,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00448   { "subw",    6,16, 0x21,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00449   { "subd",    6,16, 0x23,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00450   { "subcb",   6,16, 0x30,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00451   { "subcw",   6,16, 0x31,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00452   { "subcd",   6,16, 0x33,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00453   { "subpb",  14,24, 0x2c4e,       "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00454   { "subpw",  14,24, 0x2d4e,       "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00455   { "subpd",  14,24, 0x2f4e,       "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00456 #ifdef NS32K_SVC_IMMED_OPERANDS
00457   { "svc",     8,8,  0xe2,  "2i1i",              1,     "",    DEF_MODEC,DEF_MODEL  }, /* not really, but some unix uses it */
00458 #else
00459   { "svc",     8,8,  0xe2,  "",           0,     "",    DEF_MODEC,DEF_MODEL  },
00460 #endif
00461   { "tbitb",   6,16, 0x34,  "1B2A",              1,     "",    DEF_MODEC,DEF_MODEL  },
00462   { "tbitw",   6,16, 0x35,  "1W2A",              2,     "",    DEF_MODEC,DEF_MODEL  },
00463   { "tbitd",   6,16, 0x37,  "1D2A",              4,     "",    DEF_MODEC,DEF_MODEL  },
00464   { "truncfb",       14,24, 0x2c3e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00465   { "truncfw",       14,24, 0x2d3e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00466   { "truncfd",       14,24, 0x2f3e,       "1F2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00467   { "trunclb",       14,24, 0x283e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00468   { "trunclw",       14,24, 0x293e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00469   { "truncld",       14,24, 0x2b3e,       "1L2I",              8,     "",    DEF_MODEC,DEF_MODEL  },
00470   { "wait",    8,8,  0xb2,  "",           0,     "",    DEF_MODEC,DEF_MODEL  },
00471   { "wrval",  19,24, 0x0071e,"1A",        0,     "",    DEF_MODEC,DEF_MODEL  },
00472   { "xorb",    6,16, 0x38,  "1B2I",              1,     "",    DEF_MODEC,DEF_MODEL  },
00473   { "xorw",    6,16, 0x39,  "1W2I",              2,     "",    DEF_MODEC,DEF_MODEL  },
00474   { "xord",    6,16, 0x3b,  "1D2I",              4,     "",    DEF_MODEC,DEF_MODEL  },
00475   { "dotf",   14,24,  0x0dfe, "1F2F",            4,     "",    DEF_MODEC,DEF_MODEL  },
00476   { "dotl",   14,24,  0x0cfe, "1L2L",            8,     "",    DEF_MODEC,DEF_MODEL  },
00477   { "logbf",  14,24,  0x15fe, "1F2Z",            4,     "",    DEF_MODEC,DEF_MODEL  },
00478   { "logbl",  14,24,  0x14fe, "1L2Z",            8,     "",    DEF_MODEC,DEF_MODEL  },
00479   { "polyf",  14,24,  0x09fe, "1F2F",            4,     "",    DEF_MODEC,DEF_MODEL  },
00480   { "polyl",  14,24,  0x08fe, "1L2L",            8,     "",    DEF_MODEC,DEF_MODEL  },
00481   { "scalbf", 14,24,  0x11fe, "1F2Z",            4,     "",    DEF_MODEC,DEF_MODEL  },
00482   { "scalbl", 14,24,  0x10fe, "1L2Z",            8,     "",    DEF_MODEC,DEF_MODEL  },
00483 };
00484 
00485 #define MAX_ARGS 4
00486 #define ARG_LEN 50
00487