|
|
1.1 root 1: /*
2: * static char *ID_instabh = "@(#) instab.h: 1.3 12/10/83";
3: */
4:
5: #define SHFT_MSK 0x1F
6: #define DUMMY 0x01
7: #define INSTRX 0x10
8: #define INSTRB 0x11
9: #define INSTRH 0x12
10: #define INSTRW 0x13
11: #if FLOAT
12: #define INSTRD 0x14
13: #endif
14: #define INSTRBH 0x15
15: #define INSTRBW 0x16
16: #define INSTRHW 0x17
17: #define INSTRWH 0x18
18: #define INSTRWB 0x19
19: #define INSTRHB 0x20
20: /*
21: * the following defines are not needed at this time
22: * but are included for completeness
23: *
24: #if FLOAT
25: #define INSTRHD 0x21
26: #define INSTRWD 0x22
27: #define INSTRDH 0x23
28: #define INSTRDW 0x24
29: #endif
30: *
31: */
32: #define PSEUDO 0x25
33: #define IS25 0x40
34: #define REGMD 0x1 /* register mode */
35: #define REGDFMD 0x2 /* register defered mode */
36: #define IMMD 0x3 /* immediate mode */
37: #define ABSMD 0x4 /* absolute address mode */
38: #define ABSDFMD 0x5 /* absolute address deferred mode */
39: #define EXADMD 0x6 /* external address mode */
40: #define EXADDFMD 0x7 /* external address deferred mode */
41: #define DSPMD 0x8 /* displacement mode */
42: #define DSPDFMD 0x9 /* displacement deferred mode */
43:
44: #define CREGMD 0x4 /* register mode */
45: #define CREGDFMD 0x5 /* register deferred mode */
46: #define CFPDSPMD 0x6 /* FP displacement mode */
47: #define CAPDSPMD 0x7 /* AP displacement mode */
48: #define CDSPMD 0x8 /* displacement mode */
49: #define CDSPDFMD 0x9 /* displacement deferred mode */
50: #define CHDSPMD 0xA /* halfword displacement mode */
51: #define CHDSPDFMD 0xB /* halfword displacement deferred mode */
52: #define CBDSPMD 0xC /* byte displacement mode */
53: #define CBDSPDFMD 0xD /* byte displacement deferred mode */
54: #define CEXPAND 0xE /* expand byte */
55: #define CIMMD 0x4F /* immediate mode */
56: #define CHIMMD 0x5F /* halfword immediate */
57: #define CBIMMD 0x6F /* byte immediate */
58: #define CABSMD 0x7F /* absolute address mode */
59: #define CABSDFMD 0xEF /* absolute address deferred mode */
60:
61: #if FLOAT
62: #define FPIMMD 0x13 /* dummy floating point immediate mode */
63: #define CDIMMD 0xCF /* floating point double immediate mode */
64: #endif
65:
66: #define FPREG 0x9 /* FP register number */
67: #define APREG 0xA /* AP register number */
68: #define PSWREG 0xB /* PSW register number */
69: #define SPREG 0xC /* SP register number */
70: #define PCREG 0xF /* PC register number */
71:
72: #define UBYTE 0x3
73: #define SBYTE 0x7
74: #define UHALF 0x2
75: #define SHALF 0x6
76: #define UWORD 0x0
77: #define SWORD 0x4
78: #define NOTYPE 0xF /* no new type (i.e. {...}) specified */
79:
80: #define JMPOPCD 0x24L
81:
82: #define NULLSPEC 0x00L
83: #define BYTESPEC 0x01L
84: #define HALFSPEC 0x02L
85: #define WORDSPEC 0x03L
86: #define LITERALSPEC 0x04L
87: #define SHORTSPEC 0x05L
88:
89: typedef struct {
90: short exptype;
91: symbol *symptr;
92: long expval; /* holds value of integer expression, coded
93: float or first word of a double constant */
94: #if FLOAT
95: long fdexpval2; /* holds second word of a double constant */
96: #endif
97: /* variables that may be needed in future fp releases
98: * short fptype; 1=single fp ; 2=double fp constant
99: * double fpexpval; holds value of floating point expression
100: */
101: } rexpr;
102:
103: typedef struct {
104: short newtype; /* only need BYTE, but short keeps the structure even */
105: BYTE admode;
106: BYTE adreg;
107: rexpr adexpr;
108: /*
109: * The expression specifier describes the size of the expression
110: * and is kept here.
111: */
112: long expspec;
113: } addrmode;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.