|
|
1.1 ! root 1: /* ! 2: * Copyright (c) 1983 The Regents of the University of California. ! 3: * All rights reserved. ! 4: * ! 5: * Redistribution and use in source and binary forms are permitted ! 6: * provided that: (1) source distributions retain this entire copyright ! 7: * notice and comment, and (2) distributions including binaries display ! 8: * the following acknowledgement: ``This product includes software ! 9: * developed by the University of California, Berkeley and its contributors'' ! 10: * in the documentation or other materials provided with the distribution ! 11: * and in all advertising materials mentioning features or use of this ! 12: * software. Neither the name of the University nor the names of its ! 13: * contributors may be used to endorse or promote products derived ! 14: * from this software without specific prior written permission. ! 15: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ! 16: * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ! 17: * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 18: */ ! 19: ! 20: #ifndef lint ! 21: static char sccsid[] = "@(#)ops.sun.c 5.2 (Berkeley) 6/1/90"; ! 22: #endif /* not lint */ ! 23: ! 24: /* ! 25: * Machine operators. ! 26: */ ! 27: ! 28: #include "defs.h" ! 29: #include "ops.h" ! 30: #include "machine.h" ! 31: ! 32: #ifndef public ! 33: ! 34: /* ! 35: * 68000 opcodes. ! 36: */ ! 37: ! 38: #define IMDF "#0x%x" /* immediate data format */ ! 39: ! 40: typedef struct { ! 41: unsigned short mask, match; ! 42: int (*opfun)(); ! 43: char *farg; ! 44: } Optab; ! 45: ! 46: #endif ! 47: ! 48: public String bname[16] = { ! 49: "ra", "sr", "hi", "ls", "cc", "cs", "ne", ! 50: "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le" ! 51: }; ! 52: ! 53: public String cname[16] = { ! 54: "ra", "f", "hi", "ls", "cc", "cs", "ne", ! 55: "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le" ! 56: }; ! 57: ! 58: public String dbname[16] = { ! 59: "t", "ra", "hi", "ls", "cc", "cs", "ne", ! 60: "eq", "vc", "vs", "pl", "mi", "ge", "lt", "gt", "le" ! 61: }; ! 62: ! 63: public String shro[4] = { "as", "ls", "rox", "ro" }; ! 64: ! 65: public String bit[4] = { "btst", "bchg", "bclr", "bset" }; ! 66: ! 67: /* ! 68: * order is important here ! 69: */ ! 70: ! 71: public Optab optab[] = { ! 72: 0xF000, 0x1000, omove, "b", /* move instructions */ ! 73: 0xF000, 0x2000, omove, "l", ! 74: 0xF000, 0x3000, omove, "w", ! 75: 0xF000, 0x6000, obranch, 0, /* branches */ ! 76: 0xFF00, 0x0000, oimmed, "or", /* op class 0 */ ! 77: 0xFF00, 0x0200, oimmed, "and", ! 78: 0xFF00, 0x0400, oimmed, "sub", ! 79: 0xFF00, 0x0600, oimmed, "add", ! 80: 0xFF00, 0x0A00, oimmed, "eor", ! 81: 0xFF00, 0x0C00, oimmed, "cmp", ! 82: 0xFF00, 0x0E00, omovs, "movs", ! 83: 0xF100, 0x0100, biti, 0, ! 84: 0xF800, 0x0800, biti, 0, ! 85: 0xFFC0, 0x40C0, oneop, "move_from_sr\t", /* op class 4 */ ! 86: 0xFF00, 0x4000, soneop, "negx", ! 87: 0xFFC0, 0x42C0, oneop, "movw cc,", ! 88: 0xFF00, 0x4200, soneop, "clr", ! 89: 0xFFC0, 0x44C0, oneop, "move_to_ccr ", ! 90: 0xFF00, 0x4400, soneop, "neg", ! 91: 0xFFC0, 0x46C0, oneop, "move_to_sr ", ! 92: 0xFF00, 0x4600, soneop, "not", ! 93: 0xFFC0, 0x4800, oneop, "nbcd ", ! 94: 0xFFF8, 0x4840, oreg, "\tswap\td%D", ! 95: 0xFFC0, 0x4840, oneop, "pea ", ! 96: 0xFFF8, 0x4880, oreg, "\textw\td%D", ! 97: 0xFFF8, 0x48C0, oreg, "\textl\td%D", ! 98: 0xFB80, 0x4880, omovem, 0, ! 99: 0xFFC0, 0x4AC0, oneop, "tas ", ! 100: 0xFF00, 0x4A00, soneop, "tst", ! 101: 0xFFF0, 0x4E40, otrap, 0, ! 102: 0xFFF8, 0x4E50, olink, 0, ! 103: 0xFFFE, 0x4E7A, omovc, "\tmovc\t", ! 104: 0xFFF8, 0x4880, oreg, "\textw\td%D", ! 105: 0xFFF8, 0x48C0, oreg, "\textl\td%D", ! 106: 0xFFF8, 0x4E58, oreg, "\tunlk\ta%D", ! 107: 0xFFF8, 0x4E60, oreg, "\tmove\ta%D,usp", ! 108: 0xFFF8, 0x4E68, oreg, "\tmove\tusp,a%D", ! 109: 0xFFFF, 0x4E70, oprint, "reset", ! 110: 0xFFFF, 0x4E71, oprint, "nop", ! 111: 0xFFFF, 0x4E72, ostop, "\tstop\t0x%x", ! 112: 0xFFFF, 0x4E73, oprint, "rte", ! 113: 0xFFFF, 0x4E74, ortspop, "\trts\t0x%x", ! 114: 0xFFFF, 0x4E75, orts, "rts", ! 115: 0xFFFF, 0x4E76, oprint, "trapv", ! 116: 0xFFFF, 0x4E77, oprint, "rtr", ! 117: 0xFFC0, 0x4E80, jsrop, "jsr ", ! 118: 0xFFC0, 0x4EC0, jmpop, "jmp ", ! 119: 0xF1C0, 0x4180, ochk, "chk", ! 120: 0xF1C0, 0x41C0, ochk, "lea", ! 121: 0xF0F8, 0x50C8, odbcc, "\tdb%s\td%D,", ! 122: 0xF0C0, 0x50C0, oscc, 0, ! 123: 0xF100, 0x5000, oquick, "addq", ! 124: 0xF100, 0x5100, oquick, "subq", ! 125: 0xF000, 0x7000, omoveq, 0, ! 126: 0xF1C0, 0x80C0, ochk, "divu", ! 127: 0xF1C0, 0x81C0, ochk, "divs", ! 128: 0xF1F0, 0x8100, extend, "sbcd", ! 129: 0xF000, 0x8000, opmode, "or", ! 130: 0xF1C0, 0x91C0, opmode, "sub", ! 131: 0xF130, 0x9100, extend, "subx", ! 132: 0xF000, 0x9000, opmode, "sub", ! 133: 0xF1C0, 0xB1C0, opmode, "cmp", ! 134: 0xF138, 0xB108, extend, "cmpm", ! 135: 0xF100, 0xB000, opmode, "cmp", ! 136: 0xF100, 0xB100, opmode, "eor", ! 137: 0xF1C0, 0xC0C0, ochk, "mulu", ! 138: 0xF1C0, 0xC1C0, ochk, "muls", ! 139: 0xF1F8, 0xC188, extend, "exg", ! 140: 0xF1F8, 0xC148, extend, "exg", ! 141: 0xF1F8, 0xC140, extend, "exg", ! 142: 0xF1F0, 0xC100, extend, "abcd", ! 143: 0xF000, 0xC000, opmode, "and", ! 144: 0xF1C0, 0xD1C0, opmode, "add", ! 145: 0xF130, 0xD100, extend, "addx", ! 146: 0xF000, 0xD000, opmode, "add", ! 147: 0xF100, 0xE000, shroi, "r", ! 148: 0xF100, 0xE100, shroi, "l", ! 149: 0, 0, 0, 0 ! 150: }; ! 151:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.