xref: /csrg-svn/old/dbx/ops.sun.c (revision 42683)
138102Sbostic /*
238102Sbostic  * Copyright (c) 1983 The Regents of the University of California.
338102Sbostic  * All rights reserved.
438102Sbostic  *
5*42683Sbostic  * %sccs.include.redist.c%
638102Sbostic  */
738102Sbostic 
838102Sbostic #ifndef lint
9*42683Sbostic static char sccsid[] = "@(#)ops.sun.c	5.2 (Berkeley) 06/01/90";
1038102Sbostic #endif /* not lint */
1138102Sbostic 
1238102Sbostic /*
1338102Sbostic  * Machine operators.
1438102Sbostic  */
1538102Sbostic 
1638102Sbostic #include "defs.h"
1738102Sbostic #include "ops.h"
1838102Sbostic #include "machine.h"
1938102Sbostic 
2038102Sbostic #ifndef public
2138102Sbostic 
2238102Sbostic /*
2338102Sbostic  * 68000 opcodes.
2438102Sbostic  */
2538102Sbostic 
2638102Sbostic #define IMDF "#0x%x"		/* immediate data format */
2738102Sbostic 
2838102Sbostic typedef struct {
2938102Sbostic     unsigned short mask, match;
3038102Sbostic     int (*opfun)();
3138102Sbostic     char *farg;
3238102Sbostic } Optab;
3338102Sbostic 
3438102Sbostic #endif
3538102Sbostic 
3638102Sbostic public String bname[16] = {
3738102Sbostic     "ra", "sr", "hi", "ls", "cc", "cs", "ne",
3838102Sbostic     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
3938102Sbostic };
4038102Sbostic 
4138102Sbostic public String cname[16] = {
4238102Sbostic     "ra", "f", "hi", "ls", "cc", "cs", "ne",
4338102Sbostic     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
4438102Sbostic };
4538102Sbostic 
4638102Sbostic public String dbname[16] = {
4738102Sbostic     "t", "ra", "hi", "ls", "cc", "cs", "ne",
4838102Sbostic     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
4938102Sbostic };
5038102Sbostic 
5138102Sbostic public String shro[4] = { "as", "ls", "rox", "ro" };
5238102Sbostic 
5338102Sbostic public String bit[4] = { "btst", "bchg", "bclr", "bset" };
5438102Sbostic 
5538102Sbostic /*
5638102Sbostic  * order is important here
5738102Sbostic  */
5838102Sbostic 
5938102Sbostic public Optab optab[] = {
6038102Sbostic     0xF000, 0x1000, omove, "b",			/* move instructions */
6138102Sbostic     0xF000, 0x2000, omove, "l",
6238102Sbostic     0xF000, 0x3000, omove, "w",
6338102Sbostic     0xF000, 0x6000, obranch, 0,			/* branches   */
6438102Sbostic     0xFF00, 0x0000, oimmed, "or",		/* op class 0  */
6538102Sbostic     0xFF00, 0x0200, oimmed, "and",
6638102Sbostic     0xFF00, 0x0400, oimmed, "sub",
6738102Sbostic     0xFF00, 0x0600, oimmed, "add",
6838102Sbostic     0xFF00, 0x0A00, oimmed, "eor",
6938102Sbostic     0xFF00, 0x0C00, oimmed, "cmp",
7038102Sbostic     0xFF00, 0x0E00, omovs,  "movs",
7138102Sbostic     0xF100, 0x0100, biti, 0,
7238102Sbostic     0xF800, 0x0800, biti, 0,
7338102Sbostic     0xFFC0, 0x40C0, oneop, "move_from_sr\t",	/* op class 4 */
7438102Sbostic     0xFF00, 0x4000, soneop, "negx",
7538102Sbostic     0xFFC0, 0x42C0, oneop,  "movw	cc,",
7638102Sbostic     0xFF00, 0x4200, soneop, "clr",
7738102Sbostic     0xFFC0, 0x44C0, oneop, "move_to_ccr	",
7838102Sbostic     0xFF00, 0x4400, soneop, "neg",
7938102Sbostic     0xFFC0, 0x46C0, oneop, "move_to_sr	",
8038102Sbostic     0xFF00, 0x4600, soneop, "not",
8138102Sbostic     0xFFC0, 0x4800, oneop, "nbcd	",
8238102Sbostic     0xFFF8, 0x4840, oreg, "\tswap\td%D",
8338102Sbostic     0xFFC0, 0x4840, oneop, "pea	",
8438102Sbostic     0xFFF8, 0x4880, oreg, "\textw\td%D",
8538102Sbostic     0xFFF8, 0x48C0, oreg, "\textl\td%D",
8638102Sbostic     0xFB80, 0x4880, omovem, 0,
8738102Sbostic     0xFFC0, 0x4AC0, oneop, "tas	",
8838102Sbostic     0xFF00, 0x4A00, soneop, "tst",
8938102Sbostic     0xFFF0, 0x4E40, otrap, 0,
9038102Sbostic     0xFFF8, 0x4E50, olink, 0,
9138102Sbostic     0xFFFE, 0x4E7A, omovc, "\tmovc\t",
9238102Sbostic     0xFFF8, 0x4880, oreg, "\textw\td%D",
9338102Sbostic     0xFFF8, 0x48C0, oreg, "\textl\td%D",
9438102Sbostic     0xFFF8, 0x4E58, oreg, "\tunlk\ta%D",
9538102Sbostic     0xFFF8, 0x4E60, oreg, "\tmove\ta%D,usp",
9638102Sbostic     0xFFF8, 0x4E68, oreg, "\tmove\tusp,a%D",
9738102Sbostic     0xFFFF, 0x4E70, oprint, "reset",
9838102Sbostic     0xFFFF, 0x4E71, oprint, "nop",
9938102Sbostic     0xFFFF, 0x4E72, ostop, "\tstop\t0x%x",
10038102Sbostic     0xFFFF, 0x4E73, oprint, "rte",
10138102Sbostic     0xFFFF, 0x4E74, ortspop, "\trts\t0x%x",
10238102Sbostic     0xFFFF, 0x4E75, orts, "rts",
10338102Sbostic     0xFFFF, 0x4E76, oprint, "trapv",
10438102Sbostic     0xFFFF, 0x4E77, oprint, "rtr",
10538102Sbostic     0xFFC0, 0x4E80, jsrop, "jsr	",
10638102Sbostic     0xFFC0, 0x4EC0, jmpop, "jmp	",
10738102Sbostic     0xF1C0, 0x4180, ochk, "chk",
10838102Sbostic     0xF1C0, 0x41C0, ochk, "lea",
10938102Sbostic     0xF0F8, 0x50C8, odbcc, "\tdb%s\td%D,",
11038102Sbostic     0xF0C0, 0x50C0, oscc,  0,
11138102Sbostic     0xF100, 0x5000, oquick, "addq",
11238102Sbostic     0xF100, 0x5100, oquick, "subq",
11338102Sbostic     0xF000, 0x7000, omoveq, 0,
11438102Sbostic     0xF1C0, 0x80C0, ochk, "divu",
11538102Sbostic     0xF1C0, 0x81C0, ochk, "divs",
11638102Sbostic     0xF1F0, 0x8100, extend, "sbcd",
11738102Sbostic     0xF000, 0x8000, opmode, "or",
11838102Sbostic     0xF1C0, 0x91C0, opmode, "sub",
11938102Sbostic     0xF130, 0x9100, extend, "subx",
12038102Sbostic     0xF000, 0x9000, opmode, "sub",
12138102Sbostic     0xF1C0, 0xB1C0, opmode, "cmp",
12238102Sbostic     0xF138, 0xB108, extend, "cmpm",
12338102Sbostic     0xF100, 0xB000, opmode, "cmp",
12438102Sbostic     0xF100, 0xB100, opmode, "eor",
12538102Sbostic     0xF1C0, 0xC0C0, ochk, "mulu",
12638102Sbostic     0xF1C0, 0xC1C0, ochk, "muls",
12738102Sbostic     0xF1F8, 0xC188, extend, "exg",
12838102Sbostic     0xF1F8, 0xC148, extend, "exg",
12938102Sbostic     0xF1F8, 0xC140, extend, "exg",
13038102Sbostic     0xF1F0, 0xC100, extend, "abcd",
13138102Sbostic     0xF000, 0xC000, opmode, "and",
13238102Sbostic     0xF1C0, 0xD1C0, opmode, "add",
13338102Sbostic     0xF130, 0xD100, extend, "addx",
13438102Sbostic     0xF000, 0xD000, opmode, "add",
13538102Sbostic     0xF100, 0xE000, shroi, "r",
13638102Sbostic     0xF100, 0xE100, shroi, "l",
13738102Sbostic     0, 0, 0, 0
13838102Sbostic };
13938102Sbostic 
140