xref: /plan9-contrib/sys/src/libmach/4c/4.out.h (revision f8bc6aaf8056e137bcdfb6117a990ac3eff62cc9)
1 #define	NSNAME	8
2 #define	NSYM	50
3 #define	NREG	32
4 
5 #define NOPROF	(1<<0)
6 #define DUPOK	(1<<1)
7 
8 #define	REGZERO		0
9 #define	REGRET		1
10 #define	REGARG		1
11 /* compiler allocates R1 up as temps */
12 /* compiler allocates register variables R3-R23 */
13 #define	REGEXT		25
14 /* compiler allocates external registers R25 down */
15 /* dont use R26 R27 */
16 #define	REGTMP		28
17 #define	REGSP		29
18 #define	REGSB		30
19 #define	REGLINK		31
20 
21 #define	FREGRET		0
22 /* compiler allocates register variables F4-F22 */
23 /* compiler allocates external registers F22 down */
24 #define	FREGEXT		22
25 #define	FREGZERO	24	/* both float and double */
26 #define	FREGHALF	26	/* double */
27 #define	FREGONE		28	/* double */
28 #define	FREGTWO		30	/* double */
29 
30 enum	as
31 {
32 	AXXX,
33 
34 	AABSD,
35 	AABSF,
36 	AABSW,
37 	AADD,
38 	AADDD,
39 	AADDF,
40 	AADDU,
41 	AADDW,
42 	AAND,
43 	ABEQ,
44 	ABFPF,
45 	ABFPT,
46 	ABGEZ,
47 	ABGEZAL,
48 	ABGTZ,
49 	ABLEZ,
50 	ABLTZ,
51 	ABLTZAL,
52 	ABNE,
53 	ABREAK,
54 	ACMPEQD,
55 	ACMPEQF,
56 	ACMPGED,
57 	ACMPGEF,
58 	ACMPGTD,
59 	ACMPGTF,
60 	ADATA,
61 	ADIV,
62 	ADIVD,
63 	ADIVF,
64 	ADIVU,
65 	ADIVW,
66 	AGLOBL,
67 	AGOK,
68 	AHISTORY,
69 	AJAL,
70 	AJMP,
71 	AMOVB,
72 	AMOVBU,
73 	AMOVD,
74 	AMOVDF,
75 	AMOVDW,
76 	AMOVF,
77 	AMOVFD,
78 	AMOVFW,
79 	AMOVH,
80 	AMOVHU,
81 	AMOVW,
82 	AMOVWD,
83 	AMOVWF,
84 	AMOVWL,
85 	AMOVWR,
86 	AMUL,
87 	AMULD,
88 	AMULF,
89 	AMULU,
90 	AMULW,
91 	ANAME32,
92 	ANAME,
93 	ANEGD,
94 	ANEGF,
95 	ANEGW,
96 	ANOP,
97 	ANOR,
98 	AOR,
99 	AREM,
100 	AREMU,
101 	ARET,
102 	ARFE,
103 	ASGT,
104 	ASGTU,
105 	ASLL,
106 	ASRA,
107 	ASRL,
108 	ASUB,
109 	ASUBD,
110 	ASUBF,
111 	ASUBU,
112 	ASUBW,
113 	ASYSCALL,
114 	ATEXT,
115 	ATLBP,
116 	ATLBR,
117 	ATLBWI,
118 	ATLBWR,
119 	AWORD,
120 	AXOR,
121 
122 	AEND,
123 
124 	AMOVV,
125 	AMOVVL,
126 	AMOVVR,
127 	ASLLV,
128 	ASRAV,
129 	ASRLV,
130 	ADIVV,
131 	ADIVVU,
132 	AREMV,
133 	AREMVU,
134 	AMULV,
135 	AMULVU,
136 	AADDV,
137 	AADDVU,
138 	ASUBV,
139 	ASUBVU,
140 
141 	ADYNT,
142 	AINIT,
143 
144 	ABCASE,
145 	ACASE,
146 
147 	ATRUNCFV,
148 	ATRUNCDV,
149 	ATRUNCFW,
150 	ATRUNCDW,
151 	AMOVWU,
152 	AMOVFV,
153 	AMOVDV,
154 	AMOVVF,
155 	AMOVVD,
156 
157 	ASIGNAME,
158 
159 	ALAST,
160 };
161 
162 /* type/name */
163 #define	D_GOK	0
164 #define	D_NONE	1
165 
166 /* type */
167 #define	D_BRANCH (D_NONE+1)
168 #define	D_OREG	(D_NONE+2)
169 #define	D_EXTERN (D_NONE+3)	/* name */
170 #define	D_STATIC (D_NONE+4)	/* name */
171 #define	D_AUTO	(D_NONE+5)	/* name */
172 #define	D_PARAM	(D_NONE+6)	/* name */
173 #define	D_CONST	(D_NONE+7)
174 #define	D_FCONST (D_NONE+8)
175 #define	D_SCONST (D_NONE+9)
176 #define	D_HI	(D_NONE+10)
177 #define	D_LO	(D_NONE+11)
178 #define	D_REG	(D_NONE+12)
179 #define	D_FREG	(D_NONE+13)
180 #define	D_FCREG	(D_NONE+14)
181 #define	D_MREG	(D_NONE+15)
182 #define	D_FILE	(D_NONE+16)
183 #define	D_OCONST (D_NONE+17)
184 #define	D_FILE1	(D_NONE+18)
185 #define	D_VCONST (D_NONE+19)
186 
187 /*
188  * this is the ranlib header
189  */
190 #define	SYMDEF	"__.SYMDEF"
191 
192 /*
193  * this is the simulated IEEE floating point
194  */
195 typedef	struct	ieee	Ieee;
196 struct	ieee
197 {
198 	long	l;	/* contains ls-man	0xffffffff */
199 	long	h;	/* contains sign	0x80000000
200 				    exp		0x7ff00000
201 				    ms-man	0x000fffff */
202 };
203