|
|
1.1 root 1: #define MAXRAND 4
2:
3: struct optab {
4: unsigned short opcode;
5: unsigned short mask;
6: unsigned short op2;
7: unsigned short mk2;
8: char *opname;
9: char flags;
10: char nrand;
11: short rand[MAXRAND];
12: };
13:
14: /*
15: * operand types
16: */
17:
18: #define DSREG 00 /* special registers */
19: #define DEA 01 /* E.A. to low order 6 bits */
20: #define DRG 02 /* register to low order 3 bits */
21: #define DRGL 03 /* register to bits 11-9 */
22: #define DBR 04 /* branch offset (short) */
23: #define DMQ 05 /* move-quick 8-bit value */
24: #define DAQ 06 /* add-quick 3-bit value in 11-9 */
25: #define DIM 07 /* Immediate value, according to size */
26: #define DEAM 010 /* E.A. to bits 11-6 as in move */
27: #define DBCC 011 /* branch address as in "dbcc" */
28: #define DTRAP 012 /* immediate in low 4 bits */
29: #define D2L 013 /* register to bits 0-2 of next word */
30: #define D2H 014 /* register to bits 12-14 of next word */
31: #define DBL 015 /* qty in bits 0-5 of next word */
32: #define DBH 016 /* qty in bits 6-11 of next word */
33: #define DCR 017 /* control reg a bit combination in 0-11 */
34: #define DBKPT 020 /* immediate in low three bits */
35: #define DFSRC 021 /* floating source specifier */
36: #define DFDRG 022 /* floating destination register */
37: #define DFSRG 023 /* floating source register */
38: #define DFCR 024 /* floating point constant register */
39: #define DFBR 025 /* floating branch offset */
40: #define DFMRGM 026 /* FMOVE register mask */
41: #define DFMCRGM 027 /* FMOVEC register mask */
42:
43: #define DMASK 037
44:
45: /*
46: * operand flags
47: */
48:
49: #define ADEC 0100 /* funny auto-decrement */
50: #define AINC 0200 /* funny auto-increment */
51: #define AAREG 0400 /* address register */
52: #define ADREG 01000 /* data register */
53: #define AONE 02000 /* immediate always 1 */
54: #define AWORD 04000 /* immediate always two-byte */
55:
56: /*
57: * special registers
58: */
59:
60: #define C 0100 /* the condition code register */
61: #define SR 0200 /* the status register */
62: #define U 0400 /* the user stack pointer */
63:
64: /*
65: * flags
66: */
67:
68: #define B 0 /* byte */
69: #define W 1 /* word */
70: #define L 2 /* long */
71: #define D 3 /* double float */
72: #define F 4 /* single float */
73: #define NZ 010 /* no size */
74: #define SZ 017
75:
76: #define I2W 020 /* two word instruction code */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.