1// Licensed to the .NET Foundation under one or more agreements.
2// The .NET Foundation licenses this file to you under the MIT license.
3// See the LICENSE file in the project root for more information.
4//
5//
6// COM+ IL keywords, symbols and values
7//
8// This is the master table used in ILASM (asmparse.y)
9// and ILDASM (dis.cpp)
10// symbols and values are defined in asmparse.y
11// and not used in dis.cpp
12//
13
14#ifndef __IL_KYWD_H_
15#define __IL_KYWD_H_
16
17 KYWD( "void", VOID_, NO_VALUE )
18 KYWD( "bool", BOOL_, NO_VALUE )
19 KYWD( "char", CHAR_, NO_VALUE )
20 KYWD( "wchar", CHAR_, NO_VALUE )
21 KYWD( "int", INT_, NO_VALUE )
22 KYWD( "int8", INT8_, NO_VALUE )
23 KYWD( "int16", INT16_, NO_VALUE )
24 KYWD( "int32", INT32_, NO_VALUE )
25 KYWD( "int64", INT64_, NO_VALUE )
26 KYWD( "uint", UINT_, NO_VALUE )
27 KYWD( "uint8", UINT8_, NO_VALUE )
28 KYWD( "uint16", UINT16_, NO_VALUE )
29 KYWD( "uint32", UINT32_, NO_VALUE )
30 KYWD( "uint64", UINT64_, NO_VALUE )
31 KYWD( "float", FLOAT_, NO_VALUE )
32 KYWD( "float32", FLOAT32_, NO_VALUE )
33 KYWD( "float64", FLOAT64_, NO_VALUE )
34 KYWD( "refany", TYPEDREF_, NO_VALUE )
35 KYWD( "typedref", TYPEDREF_, NO_VALUE )
36 KYWD( "object", OBJECT_, NO_VALUE )
37 KYWD( "string", STRING_, NO_VALUE )
38 KYWD( "native", NATIVE_, NO_VALUE )
39 KYWD( "unsigned", UNSIGNED_, NO_VALUE )
40 KYWD( "value", VALUE_, NO_VALUE )
41 KYWD( "valuetype", VALUETYPE_, NO_VALUE )
42 KYWD( "class", CLASS_, NO_VALUE )
43 KYWD( "vararg", VARARG_, NO_VALUE )
44 KYWD( "default", DEFAULT_, NO_VALUE )
45 KYWD( "stdcall", STDCALL_, NO_VALUE )
46 KYWD( "thiscall", THISCALL_, NO_VALUE )
47 KYWD( "fastcall", FASTCALL_, NO_VALUE )
48 KYWD( "unmanaged", UNMANAGED_, NO_VALUE )
49 KYWD( "beforefieldinit",BEFOREFIELDINIT_, NO_VALUE )
50 KYWD( "instance", INSTANCE_, NO_VALUE )
51 KYWD( "filter", FILTER_, NO_VALUE )
52 KYWD( "catch", CATCH_, NO_VALUE )
53 KYWD( "static", STATIC_ , NO_VALUE )
54 KYWD( "public", PUBLIC_, NO_VALUE )
55 KYWD( "private", PRIVATE_, NO_VALUE )
56 KYWD( "forwarder", FORWARDER_, NO_VALUE )
57 KYWD( "synchronized", SYNCHRONIZED_, NO_VALUE )
58 KYWD( "interface", INTERFACE_, NO_VALUE )
59 KYWD( "extends", EXTENDS_, NO_VALUE )
60 KYWD( "implements", IMPLEMENTS_, NO_VALUE )
61 KYWD( "handler", HANDLER_, NO_VALUE )
62 KYWD( "finally", FINALLY_, NO_VALUE )
63 KYWD( "fault", FAULT_, NO_VALUE )
64 KYWD( "to", TO_, NO_VALUE )
65 KYWD( "abstract", ABSTRACT_, NO_VALUE )
66 KYWD( "auto", AUTO_, NO_VALUE )
67 KYWD( "sequential", SEQUENTIAL_, NO_VALUE )
68 KYWD( "explicit", EXPLICIT_, NO_VALUE )
69 KYWD( "ansi", ANSI_, NO_VALUE )
70 KYWD( "unicode", UNICODE_, NO_VALUE )
71 KYWD( "autochar", AUTOCHAR_, NO_VALUE )
72 KYWD( "import", IMPORT_, NO_VALUE )
73 KYWD( "enum", ENUM_, NO_VALUE )
74 KYWD( "virtual", VIRTUAL_, NO_VALUE )
75 KYWD( "strict", STRICT_, NO_VALUE )
76 KYWD( "il", CIL_, NO_VALUE )
77 KYWD( "cil", CIL_, NO_VALUE )
78 KYWD( "optil", OPTIL_, NO_VALUE )
79 KYWD( "managed", MANAGED_, NO_VALUE )
80 KYWD( "preservesig", PRESERVESIG_, NO_VALUE )
81 KYWD( "runtime", RUNTIME_, NO_VALUE )
82 KYWD( "method", METHOD_, NO_VALUE )
83 KYWD( "field", FIELD_, NO_VALUE )
84 KYWD( "property", PROPERTY_, NO_VALUE )
85 KYWD( "bytearray", BYTEARRAY_, NO_VALUE )
86 KYWD( "final", FINAL_, NO_VALUE )
87 KYWD( "sealed", SEALED_, NO_VALUE )
88 KYWD( "specialname", SPECIALNAME_, NO_VALUE )
89 KYWD( "family", FAMILY_, NO_VALUE )
90 KYWD( "assembly", ASSEMBLY_, NO_VALUE )
91 KYWD( "famandassem", FAMANDASSEM_, NO_VALUE )
92 KYWD( "famorassem", FAMORASSEM_, NO_VALUE )
93 KYWD( "privatescope", PRIVATESCOPE_, NO_VALUE )
94 KYWD( "nested", NESTED_, NO_VALUE )
95 KYWD( "hidebysig", HIDEBYSIG_, NO_VALUE )
96 KYWD( "newslot", NEWSLOT_, NO_VALUE )
97 KYWD( "aggressiveinlining",AGGRESSIVEINLINING_,NO_VALUE )
98 KYWD( "rtspecialname", RTSPECIALNAME_, NO_VALUE )
99 KYWD( "pinvokeimpl", PINVOKEIMPL_, NO_VALUE )
100 KYWD( "unmanagedexp", UNMANAGEDEXP_, NO_VALUE )
101 KYWD( "reqsecobj", REQSECOBJ_, NO_VALUE )
102 KYWD( ".ctor", _CTOR, NO_VALUE )
103 KYWD( ".cctor", _CCTOR, NO_VALUE )
104 KYWD( "initonly", INITONLY_, NO_VALUE )
105 KYWD( "literal", LITERAL_, NO_VALUE )
106 KYWD( "notserialized", NOTSERIALIZED_, NO_VALUE )
107 KYWD( "forwardref", FORWARDREF_, NO_VALUE )
108 KYWD( "internalcall", INTERNALCALL_, NO_VALUE )
109 KYWD( "noinlining", NOINLINING_, NO_VALUE )
110 KYWD( "nooptimization", NOOPTIMIZATION_, NO_VALUE )
111 KYWD( "aggressiveoptimization", AGGRESSIVEOPTIMIZATION_, NO_VALUE )
112 KYWD( "nomangle", NOMANGLE_, NO_VALUE )
113 KYWD( "lasterr", LASTERR_, NO_VALUE )
114 KYWD( "winapi", WINAPI_, NO_VALUE )
115 KYWD( "cdecl", CDECL_, NO_VALUE )
116 KYWD( "as", AS_, NO_VALUE )
117 KYWD( "pinned", PINNED_, NO_VALUE )
118 KYWD( "modreq", MODREQ_, NO_VALUE )
119 KYWD( "modopt", MODOPT_, NO_VALUE )
120 KYWD( "serializable", SERIALIZABLE_, NO_VALUE )
121 KYWD( "at", AT_, NO_VALUE )
122 KYWD( "tls", TLS_, NO_VALUE )
123 KYWD( "true", TRUE_, NO_VALUE )
124 KYWD( "false", FALSE_, NO_VALUE )
125 KYWD( "on", ON_, NO_VALUE )
126 KYWD( "off", OFF_, NO_VALUE )
127 KYWD( "bestfit", BESTFIT_, NO_VALUE )
128 KYWD( "charmaperror", CHARMAPERROR_, NO_VALUE )
129
130 /* assembler directives */
131 KYWD( ".class", _CLASS, NO_VALUE )
132 KYWD( ".this", _THIS, NO_VALUE )
133 KYWD( ".base", _BASE, NO_VALUE )
134 KYWD( ".nester", _NESTER, NO_VALUE )
135 KYWD( ".namespace", _NAMESPACE, NO_VALUE )
136 KYWD( ".method", _METHOD, NO_VALUE )
137 KYWD( ".field", _FIELD, NO_VALUE )
138 KYWD( ".emitbyte", _EMITBYTE, NO_VALUE )
139 KYWD( ".try", _TRY, NO_VALUE )
140 KYWD( ".maxstack", _MAXSTACK, NO_VALUE )
141 KYWD( ".locals", _LOCALS, NO_VALUE )
142 KYWD( ".entrypoint", _ENTRYPOINT, NO_VALUE )
143 KYWD( ".zeroinit", _ZEROINIT, NO_VALUE )
144 KYWD( ".data", _DATA, NO_VALUE )
145
146 KYWD( ".event", _EVENT, NO_VALUE )
147 KYWD( ".addon", _ADDON, NO_VALUE )
148 KYWD( ".removeon", _REMOVEON, NO_VALUE )
149 KYWD( ".fire", _FIRE, NO_VALUE )
150 KYWD( ".other", _OTHER, NO_VALUE )
151
152 KYWD( ".property", _PROPERTY, NO_VALUE )
153 KYWD( ".set", _SET, NO_VALUE )
154 KYWD( ".get", _GET, NO_VALUE )
155
156 KYWD( ".permission", _PERMISSION, NO_VALUE )
157 KYWD( ".permissionset", _PERMISSIONSET, NO_VALUE )
158
159 /* security actions */
160 KYWD( "request", REQUEST_, NO_VALUE )
161 KYWD( "demand", DEMAND_, NO_VALUE )
162 KYWD( "assert", ASSERT_, NO_VALUE )
163 KYWD( "deny", DENY_, NO_VALUE )
164 KYWD( "permitonly", PERMITONLY_, NO_VALUE )
165 KYWD( "linkcheck", LINKCHECK_, NO_VALUE )
166 KYWD( "inheritcheck", INHERITCHECK_, NO_VALUE )
167 KYWD( "reqmin", REQMIN_, NO_VALUE )
168 KYWD( "reqopt", REQOPT_, NO_VALUE )
169 KYWD( "reqrefuse", REQREFUSE_, NO_VALUE )
170 KYWD( "prejitgrant", PREJITGRANT_, NO_VALUE )
171 KYWD( "prejitdeny", PREJITDENY_, NO_VALUE )
172 KYWD( "noncasdemand", NONCASDEMAND_, NO_VALUE )
173 KYWD( "noncaslinkdemand",NONCASLINKDEMAND_, NO_VALUE )
174 KYWD( "noncasinheritance",NONCASINHERITANCE_,NO_VALUE )
175
176 /* extern debug data specifier */
177 KYWD( ".line", _LINE, NO_VALUE )
178 KYWD( ".language", _LANGUAGE, NO_VALUE )
179 KYWD( "#line", P_LINE, NO_VALUE )
180 /* custom value specifier */
181 KYWD( ".custom", _CUSTOM, NO_VALUE )
182 /* IL method attribute */
183 KYWD( "init", INIT_, NO_VALUE )
184 /* Class layout directives */
185 KYWD( ".size", _SIZE, NO_VALUE )
186 KYWD( ".pack", _PACK, NO_VALUE )
187 /* Manifest-related keywords */
188 KYWD( ".file", _FILE, NO_VALUE )
189 KYWD( "nometadata", NOMETADATA_, NO_VALUE )
190 KYWD( ".hash", _HASH, NO_VALUE )
191 KYWD( ".assembly", _ASSEMBLY, NO_VALUE )
192 KYWD( "retargetable", RETARGETABLE_, NO_VALUE )
193 KYWD( "windowsruntime", WINDOWSRUNTIME_, NO_VALUE )
194 KYWD( "noplatform", NOPLATFORM_, NO_VALUE )
195 KYWD( "legacy", LEGACY_, NO_VALUE )
196 KYWD( "library", LIBRARY_, NO_VALUE )
197 KYWD( "x86", X86_, NO_VALUE )
198 KYWD( "amd64", AMD64_, NO_VALUE )
199 KYWD( "arm", ARM_, NO_VALUE )
200 KYWD( "arm64", ARM64_, NO_VALUE )
201 KYWD( ".publickey", _PUBLICKEY, NO_VALUE )
202 KYWD( ".publickeytoken",_PUBLICKEYTOKEN, NO_VALUE )
203 KYWD( "algorithm", ALGORITHM_, NO_VALUE )
204 KYWD( ".ver", _VER, NO_VALUE )
205 KYWD( ".locale", _LOCALE, NO_VALUE )
206 KYWD( "extern", EXTERN_, NO_VALUE )
207 KYWD( ".export", _EXPORT, NO_VALUE )
208 KYWD( ".manifestres", _MRESOURCE, NO_VALUE )
209 KYWD( ".mresource", _MRESOURCE, NO_VALUE )
210 KYWD( ".module", _MODULE, NO_VALUE )
211 /* Field marshaling keywords */
212 KYWD( "marshal", MARSHAL_, NO_VALUE )
213 KYWD( "custom", CUSTOM_, NO_VALUE )
214 KYWD( "sysstring", SYSSTRING_, NO_VALUE )
215 KYWD( "fixed", FIXED_, NO_VALUE )
216 KYWD( "variant", VARIANT_, NO_VALUE )
217 KYWD( "currency", CURRENCY_, NO_VALUE )
218 KYWD( "syschar", SYSCHAR_, NO_VALUE )
219 KYWD( "decimal", DECIMAL_, NO_VALUE )
220 KYWD( "date", DATE_, NO_VALUE )
221 KYWD( "bstr", BSTR_, NO_VALUE )
222 KYWD( "tbstr", TBSTR_, NO_VALUE )
223 KYWD( "lpstr", LPSTR_, NO_VALUE )
224 KYWD( "lpwstr", LPWSTR_, NO_VALUE )
225 KYWD( "lptstr", LPTSTR_, NO_VALUE )
226 KYWD( "objectref", OBJECTREF_, NO_VALUE )
227 KYWD( "iunknown", IUNKNOWN_, NO_VALUE )
228 KYWD( "idispatch", IDISPATCH_, NO_VALUE )
229 KYWD( "iidparam", IIDPARAM_, NO_VALUE )
230 KYWD( "struct", STRUCT_, NO_VALUE )
231 KYWD( "safearray", SAFEARRAY_, NO_VALUE )
232 KYWD( "byvalstr", BYVALSTR_, NO_VALUE )
233 KYWD( "lpvoid", LPVOID_, NO_VALUE )
234 KYWD( "any", ANY_, NO_VALUE )
235 KYWD( "array", ARRAY_, NO_VALUE )
236 KYWD( "lpstruct", LPSTRUCT_, NO_VALUE )
237 /* VTable fixup keywords */
238 KYWD( ".vtfixup", _VTFIXUP, NO_VALUE )
239 KYWD( "fromunmanaged", FROMUNMANAGED_, NO_VALUE )
240 KYWD( "retainappdomain",RETAINAPPDOMAIN_, NO_VALUE )
241 KYWD( "callmostderived",CALLMOSTDERIVED_, NO_VALUE )
242 KYWD( ".vtentry", _VTENTRY, NO_VALUE )
243 /* Parameter attributes */
244 KYWD( "in", IN_, NO_VALUE )
245 KYWD( "out", OUT_, NO_VALUE )
246 KYWD( "opt", OPT_, NO_VALUE )
247 KYWD( ".param", PARAM_, NO_VALUE )
248 /* Method implementations */
249 KYWD( ".override", _OVERRIDE, NO_VALUE )
250 KYWD( "with", WITH_, NO_VALUE )
251 /* VariantType keywords */
252 KYWD( "null", NULL_, NO_VALUE )
253 KYWD( "error", ERROR_, NO_VALUE )
254 KYWD( "hresult", HRESULT_, NO_VALUE )
255 KYWD( "carray", CARRAY_, NO_VALUE )
256 KYWD( "userdefined", USERDEFINED_, NO_VALUE )
257 KYWD( "record", RECORD_, NO_VALUE )
258 KYWD( "filetime", FILETIME_, NO_VALUE )
259 KYWD( "blob", BLOB_, NO_VALUE )
260 KYWD( "stream", STREAM_, NO_VALUE )
261 KYWD( "storage", STORAGE_, NO_VALUE )
262 KYWD( "streamed_object",STREAMED_OBJECT_, NO_VALUE )
263 KYWD( "stored_object", STORED_OBJECT_, NO_VALUE )
264 KYWD( "blob_object", BLOB_OBJECT_, NO_VALUE )
265 KYWD( "cf", CF_, NO_VALUE )
266 KYWD( "clsid", CLSID_, NO_VALUE )
267 KYWD( "vector", VECTOR_, NO_VALUE )
268 /* Null reference keyword for InitOpt */
269 KYWD( "nullref", NULLREF_, NO_VALUE )
270 KYWD( "type", TYPE_, NO_VALUE )
271 KYWD( ".interfaceimpl", _INTERFACEIMPL, NO_VALUE )
272 /* Header flags keywords */
273 KYWD( ".subsystem", _SUBSYSTEM, NO_VALUE )
274 KYWD( ".corflags", _CORFLAGS, NO_VALUE )
275 KYWD( "alignment", ALIGNMENT_, NO_VALUE )
276 KYWD( ".imagebase", _IMAGEBASE, NO_VALUE )
277 KYWD( ".stackreserve", _STACKRESERVE, NO_VALUE )
278 /* Explicit binary flag specification keywords */
279 KYWD( "flags", FLAGS_, NO_VALUE )
280 KYWD( "callconv", CALLCONV_, NO_VALUE )
281 KYWD( "mdtoken", MDTOKEN_, NO_VALUE )
282
283 /* Some ILASM-specific syntactic sugar */
284 KYWD( ".typedef", _TYPEDEF, NO_VALUE )
285 KYWD( ".template", _TEMPLATE, NO_VALUE )
286 KYWD( ".typelist", _TYPELIST, NO_VALUE )
287 KYWD( ".mscorlib", _MSCORLIB, NO_VALUE )
288
289 /* Compilation control keywords */
290 KYWD( "#define", P_DEFINE, NO_VALUE )
291 KYWD( "#undef", P_UNDEF, NO_VALUE )
292 KYWD( "#ifdef", P_IFDEF, NO_VALUE )
293 KYWD( "#ifndef", P_IFNDEF, NO_VALUE )
294 KYWD( "#else", P_ELSE, NO_VALUE )
295 KYWD( "#endif", P_ENDIF, NO_VALUE )
296 KYWD( "#include", P_INCLUDE, NO_VALUE )
297
298
299 /* Deprecated keywords */
300 KYWD( ".vtable", _VTABLE, NO_VALUE )
301
302
303 KYWD( "^THE_END^", 0, NO_VALUE )
304#endif
305