xref: /csrg-svn/old/dbx/ops.iris.c (revision 42683)
133329Sdonn /*
238105Sbostic  * Copyright (c) 1983 The Regents of the University of California.
338105Sbostic  * All rights reserved.
438105Sbostic  *
5*42683Sbostic  * %sccs.include.redist.c%
633329Sdonn  */
733329Sdonn 
833329Sdonn #ifndef lint
9*42683Sbostic static char sccsid[] = "@(#)ops.iris.c	5.3 (Berkeley) 06/01/90";
1038105Sbostic #endif /* not lint */
1133329Sdonn 
1233329Sdonn /*
1333329Sdonn  * Machine operators.
1433329Sdonn  */
1533329Sdonn 
1633329Sdonn #include "defs.h"
1733329Sdonn #include "ops.h"
1833329Sdonn #include "machine.h"
1933329Sdonn 
2033329Sdonn #ifndef public
2133329Sdonn 
2233329Sdonn /*
2333329Sdonn  * 68000 opcodes.
2433329Sdonn  */
2533329Sdonn 
2633329Sdonn #define IMDF "#0x%x"		/* immediate data format */
2733329Sdonn 
2833329Sdonn typedef struct {
2933329Sdonn     unsigned short mask, match;
3033329Sdonn     int (*opfun)();
3133329Sdonn     char *farg;
3233329Sdonn } Optab;
3333329Sdonn 
3433329Sdonn #endif
3533329Sdonn 
3633329Sdonn public String bname[16] = {
3733329Sdonn     "ra", "sr", "hi", "ls", "cc", "cs", "ne",
3833329Sdonn     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
3933329Sdonn };
4033329Sdonn 
4133329Sdonn public String cname[16] = {
4233329Sdonn     "ra", "f", "hi", "ls", "cc", "cs", "ne",
4333329Sdonn     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
4433329Sdonn };
4533329Sdonn 
4633329Sdonn public String dbname[16] = {
4733329Sdonn     "t", "ra", "hi", "ls", "cc", "cs", "ne",
4833329Sdonn     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
4933329Sdonn };
5033329Sdonn 
5133329Sdonn public String shro[4] = { "as", "ls", "rox", "ro" };
5233329Sdonn 
5333329Sdonn public String bit[4] = { "btst", "bchg", "bclr", "bset" };
5433329Sdonn 
5533329Sdonn /*
5633329Sdonn  * order is important here
5733329Sdonn  */
5833329Sdonn 
5933329Sdonn public Optab optab[] = {
6033329Sdonn     0xF000, 0x1000, omove, "b",			/* move instructions */
6133329Sdonn     0xF000, 0x2000, omove, "l",
6233329Sdonn     0xF000, 0x3000, omove, "w",
6333329Sdonn     0xF000, 0x6000, obranch, 0,			/* branches   */
6433329Sdonn     0xFF00, 0x0000, oimmed, "or",		/* op class 0  */
6533329Sdonn     0xFF00, 0x0200, oimmed, "and",
6633329Sdonn     0xFF00, 0x0400, oimmed, "sub",
6733329Sdonn     0xFF00, 0x0600, oimmed, "add",
6833329Sdonn     0xFF00, 0x0A00, oimmed, "eor",
6933329Sdonn     0xFF00, 0x0C00, oimmed, "cmp",
7033329Sdonn     0xFF00, 0x0E00, omovs,  "movs",
7133329Sdonn     0xF100, 0x0100, biti, 0,
7233329Sdonn     0xF800, 0x0800, biti, 0,
7333329Sdonn     0xFFC0, 0x40C0, oneop, "move_from_sr\t",	/* op class 4 */
7433329Sdonn     0xFF00, 0x4000, soneop, "negx",
7533329Sdonn     0xFFC0, 0x42C0, oneop,  "movw	cc,",
7633329Sdonn     0xFF00, 0x4200, soneop, "clr",
7733329Sdonn     0xFFC0, 0x44C0, oneop, "move_to_ccr	",
7833329Sdonn     0xFF00, 0x4400, soneop, "neg",
7933329Sdonn     0xFFC0, 0x46C0, oneop, "move_to_sr	",
8033329Sdonn     0xFF00, 0x4600, soneop, "not",
8133329Sdonn     0xFFC0, 0x4800, oneop, "nbcd	",
8233329Sdonn     0xFFF8, 0x4840, oreg, "\tswap\td%D",
8333329Sdonn     0xFFC0, 0x4840, oneop, "pea	",
8433329Sdonn     0xFFF8, 0x4880, oreg, "\textw\td%D",
8533329Sdonn     0xFFF8, 0x48C0, oreg, "\textl\td%D",
8633329Sdonn     0xFB80, 0x4880, omovem, 0,
8733329Sdonn     0xFFC0, 0x4AC0, oneop, "tas	",
8833329Sdonn     0xFF00, 0x4A00, soneop, "tst",
8933329Sdonn     0xFFF0, 0x4E40, otrap, 0,
9033329Sdonn     0xFFF8, 0x4E50, olink, 0,
9133329Sdonn     0xFFFE, 0x4E7A, omovc, "\tmovc\t",
9233329Sdonn     0xFFF8, 0x4880, oreg, "\textw\td%D",
9333329Sdonn     0xFFF8, 0x48C0, oreg, "\textl\td%D",
9433329Sdonn     0xFFF8, 0x4E58, oreg, "\tunlk\ta%D",
9533329Sdonn     0xFFF8, 0x4E60, oreg, "\tmove\ta%D,usp",
9633329Sdonn     0xFFF8, 0x4E68, oreg, "\tmove\tusp,a%D",
9733329Sdonn     0xFFFF, 0x4E70, oprint, "reset",
9833329Sdonn     0xFFFF, 0x4E71, oprint, "nop",
9933329Sdonn     0xFFFF, 0x4E72, ostop, "\tstop\t0x%x",
10033329Sdonn     0xFFFF, 0x4E73, oprint, "rte",
10133329Sdonn     0xFFFF, 0x4E74, ortspop, "\trts\t0x%x",
10233329Sdonn     0xFFFF, 0x4E75, orts, "rts",
10333329Sdonn     0xFFFF, 0x4E76, oprint, "trapv",
10433329Sdonn     0xFFFF, 0x4E77, oprint, "rtr",
10533329Sdonn     0xFFC0, 0x4E80, jsrop, "jsr	",
10633329Sdonn     0xFFC0, 0x4EC0, jmpop, "jmp	",
10733329Sdonn     0xF1C0, 0x4180, ochk, "chk",
10833329Sdonn     0xF1C0, 0x41C0, ochk, "lea",
10933329Sdonn     0xF0F8, 0x50C8, odbcc, "\tdb%s\td%D,",
11033329Sdonn     0xF0C0, 0x50C0, oscc,  0,
11133329Sdonn     0xF100, 0x5000, oquick, "addq",
11233329Sdonn     0xF100, 0x5100, oquick, "subq",
11333329Sdonn     0xF000, 0x7000, omoveq, 0,
11433329Sdonn     0xF1C0, 0x80C0, ochk, "divu",
11533329Sdonn     0xF1C0, 0x81C0, ochk, "divs",
11633329Sdonn     0xF1F0, 0x8100, extend, "sbcd",
11733329Sdonn     0xF000, 0x8000, opmode, "or",
11833329Sdonn     0xF1C0, 0x91C0, opmode, "sub",
11933329Sdonn     0xF130, 0x9100, extend, "subx",
12033329Sdonn     0xF000, 0x9000, opmode, "sub",
12133329Sdonn     0xF1C0, 0xB1C0, opmode, "cmp",
12233329Sdonn     0xF138, 0xB108, extend, "cmpm",
12333329Sdonn     0xF100, 0xB000, opmode, "cmp",
12433329Sdonn     0xF100, 0xB100, opmode, "eor",
12533329Sdonn     0xF1C0, 0xC0C0, ochk, "mulu",
12633329Sdonn     0xF1C0, 0xC1C0, ochk, "muls",
12733329Sdonn     0xF1F8, 0xC188, extend, "exg",
12833329Sdonn     0xF1F8, 0xC148, extend, "exg",
12933329Sdonn     0xF1F8, 0xC140, extend, "exg",
13033329Sdonn     0xF1F0, 0xC100, extend, "abcd",
13133329Sdonn     0xF000, 0xC000, opmode, "and",
13233329Sdonn     0xF1C0, 0xD1C0, opmode, "add",
13333329Sdonn     0xF130, 0xD100, extend, "addx",
13433329Sdonn     0xF000, 0xD000, opmode, "add",
13533329Sdonn     0xF100, 0xE000, shroi, "r",
13633329Sdonn     0xF100, 0xE100, shroi, "l",
13733329Sdonn     0, 0, 0, 0
13833329Sdonn };
13933329Sdonn 
140