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