|
|
1.1 root 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) 1/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:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.