Commit | Line | Data |
---|---|---|
a41c9b3c DS |
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) %G%"; | |
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 |