| 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 | |