xref: /csrg-svn/old/dbx/ops.iris.c (revision 33329)
1*33329Sdonn /*
2*33329Sdonn  * Copyright (c) 1983 Regents of the University of California.
3*33329Sdonn  * All rights reserved.  The Berkeley software License Agreement
4*33329Sdonn  * specifies the terms and conditions for redistribution.
5*33329Sdonn  */
6*33329Sdonn 
7*33329Sdonn #ifndef lint
8*33329Sdonn static char sccsid[] = "@(#)ops.iris.c	5.1 (Berkeley) 01/12/88";
9*33329Sdonn #endif not lint
10*33329Sdonn 
11*33329Sdonn static char rcsid[] = "$Header: ops.c,v 1.2 87/03/26 20:27:48 donn Exp $";
12*33329Sdonn 
13*33329Sdonn /*
14*33329Sdonn  * Machine operators.
15*33329Sdonn  */
16*33329Sdonn 
17*33329Sdonn #include "defs.h"
18*33329Sdonn #include "ops.h"
19*33329Sdonn #include "machine.h"
20*33329Sdonn 
21*33329Sdonn #ifndef public
22*33329Sdonn 
23*33329Sdonn /*
24*33329Sdonn  * 68000 opcodes.
25*33329Sdonn  */
26*33329Sdonn 
27*33329Sdonn #define IMDF "#0x%x"		/* immediate data format */
28*33329Sdonn 
29*33329Sdonn typedef struct {
30*33329Sdonn     unsigned short mask, match;
31*33329Sdonn     int (*opfun)();
32*33329Sdonn     char *farg;
33*33329Sdonn } Optab;
34*33329Sdonn 
35*33329Sdonn #endif
36*33329Sdonn 
37*33329Sdonn public String bname[16] = {
38*33329Sdonn     "ra", "sr", "hi", "ls", "cc", "cs", "ne",
39*33329Sdonn     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
40*33329Sdonn };
41*33329Sdonn 
42*33329Sdonn public String cname[16] = {
43*33329Sdonn     "ra", "f", "hi", "ls", "cc", "cs", "ne",
44*33329Sdonn     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
45*33329Sdonn };
46*33329Sdonn 
47*33329Sdonn public String dbname[16] = {
48*33329Sdonn     "t", "ra", "hi", "ls", "cc", "cs", "ne",
49*33329Sdonn     "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le"
50*33329Sdonn };
51*33329Sdonn 
52*33329Sdonn public String shro[4] = { "as", "ls", "rox", "ro" };
53*33329Sdonn 
54*33329Sdonn public String bit[4] = { "btst", "bchg", "bclr", "bset" };
55*33329Sdonn 
56*33329Sdonn /*
57*33329Sdonn  * order is important here
58*33329Sdonn  */
59*33329Sdonn 
60*33329Sdonn public Optab optab[] = {
61*33329Sdonn     0xF000, 0x1000, omove, "b",			/* move instructions */
62*33329Sdonn     0xF000, 0x2000, omove, "l",
63*33329Sdonn     0xF000, 0x3000, omove, "w",
64*33329Sdonn     0xF000, 0x6000, obranch, 0,			/* branches   */
65*33329Sdonn     0xFF00, 0x0000, oimmed, "or",		/* op class 0  */
66*33329Sdonn     0xFF00, 0x0200, oimmed, "and",
67*33329Sdonn     0xFF00, 0x0400, oimmed, "sub",
68*33329Sdonn     0xFF00, 0x0600, oimmed, "add",
69*33329Sdonn     0xFF00, 0x0A00, oimmed, "eor",
70*33329Sdonn     0xFF00, 0x0C00, oimmed, "cmp",
71*33329Sdonn     0xFF00, 0x0E00, omovs,  "movs",
72*33329Sdonn     0xF100, 0x0100, biti, 0,
73*33329Sdonn     0xF800, 0x0800, biti, 0,
74*33329Sdonn     0xFFC0, 0x40C0, oneop, "move_from_sr\t",	/* op class 4 */
75*33329Sdonn     0xFF00, 0x4000, soneop, "negx",
76*33329Sdonn     0xFFC0, 0x42C0, oneop,  "movw	cc,",
77*33329Sdonn     0xFF00, 0x4200, soneop, "clr",
78*33329Sdonn     0xFFC0, 0x44C0, oneop, "move_to_ccr	",
79*33329Sdonn     0xFF00, 0x4400, soneop, "neg",
80*33329Sdonn     0xFFC0, 0x46C0, oneop, "move_to_sr	",
81*33329Sdonn     0xFF00, 0x4600, soneop, "not",
82*33329Sdonn     0xFFC0, 0x4800, oneop, "nbcd	",
83*33329Sdonn     0xFFF8, 0x4840, oreg, "\tswap\td%D",
84*33329Sdonn     0xFFC0, 0x4840, oneop, "pea	",
85*33329Sdonn     0xFFF8, 0x4880, oreg, "\textw\td%D",
86*33329Sdonn     0xFFF8, 0x48C0, oreg, "\textl\td%D",
87*33329Sdonn     0xFB80, 0x4880, omovem, 0,
88*33329Sdonn     0xFFC0, 0x4AC0, oneop, "tas	",
89*33329Sdonn     0xFF00, 0x4A00, soneop, "tst",
90*33329Sdonn     0xFFF0, 0x4E40, otrap, 0,
91*33329Sdonn     0xFFF8, 0x4E50, olink, 0,
92*33329Sdonn     0xFFFE, 0x4E7A, omovc, "\tmovc\t",
93*33329Sdonn     0xFFF8, 0x4880, oreg, "\textw\td%D",
94*33329Sdonn     0xFFF8, 0x48C0, oreg, "\textl\td%D",
95*33329Sdonn     0xFFF8, 0x4E58, oreg, "\tunlk\ta%D",
96*33329Sdonn     0xFFF8, 0x4E60, oreg, "\tmove\ta%D,usp",
97*33329Sdonn     0xFFF8, 0x4E68, oreg, "\tmove\tusp,a%D",
98*33329Sdonn     0xFFFF, 0x4E70, oprint, "reset",
99*33329Sdonn     0xFFFF, 0x4E71, oprint, "nop",
100*33329Sdonn     0xFFFF, 0x4E72, ostop, "\tstop\t0x%x",
101*33329Sdonn     0xFFFF, 0x4E73, oprint, "rte",
102*33329Sdonn     0xFFFF, 0x4E74, ortspop, "\trts\t0x%x",
103*33329Sdonn     0xFFFF, 0x4E75, orts, "rts",
104*33329Sdonn     0xFFFF, 0x4E76, oprint, "trapv",
105*33329Sdonn     0xFFFF, 0x4E77, oprint, "rtr",
106*33329Sdonn     0xFFC0, 0x4E80, jsrop, "jsr	",
107*33329Sdonn     0xFFC0, 0x4EC0, jmpop, "jmp	",
108*33329Sdonn     0xF1C0, 0x4180, ochk, "chk",
109*33329Sdonn     0xF1C0, 0x41C0, ochk, "lea",
110*33329Sdonn     0xF0F8, 0x50C8, odbcc, "\tdb%s\td%D,",
111*33329Sdonn     0xF0C0, 0x50C0, oscc,  0,
112*33329Sdonn     0xF100, 0x5000, oquick, "addq",
113*33329Sdonn     0xF100, 0x5100, oquick, "subq",
114*33329Sdonn     0xF000, 0x7000, omoveq, 0,
115*33329Sdonn     0xF1C0, 0x80C0, ochk, "divu",
116*33329Sdonn     0xF1C0, 0x81C0, ochk, "divs",
117*33329Sdonn     0xF1F0, 0x8100, extend, "sbcd",
118*33329Sdonn     0xF000, 0x8000, opmode, "or",
119*33329Sdonn     0xF1C0, 0x91C0, opmode, "sub",
120*33329Sdonn     0xF130, 0x9100, extend, "subx",
121*33329Sdonn     0xF000, 0x9000, opmode, "sub",
122*33329Sdonn     0xF1C0, 0xB1C0, opmode, "cmp",
123*33329Sdonn     0xF138, 0xB108, extend, "cmpm",
124*33329Sdonn     0xF100, 0xB000, opmode, "cmp",
125*33329Sdonn     0xF100, 0xB100, opmode, "eor",
126*33329Sdonn     0xF1C0, 0xC0C0, ochk, "mulu",
127*33329Sdonn     0xF1C0, 0xC1C0, ochk, "muls",
128*33329Sdonn     0xF1F8, 0xC188, extend, "exg",
129*33329Sdonn     0xF1F8, 0xC148, extend, "exg",
130*33329Sdonn     0xF1F8, 0xC140, extend, "exg",
131*33329Sdonn     0xF1F0, 0xC100, extend, "abcd",
132*33329Sdonn     0xF000, 0xC000, opmode, "and",
133*33329Sdonn     0xF1C0, 0xD1C0, opmode, "add",
134*33329Sdonn     0xF130, 0xD100, extend, "addx",
135*33329Sdonn     0xF000, 0xD000, opmode, "add",
136*33329Sdonn     0xF100, 0xE000, shroi, "r",
137*33329Sdonn     0xF100, 0xE100, shroi, "l",
138*33329Sdonn     0, 0, 0, 0
139*33329Sdonn };
140*33329Sdonn 
141