## -------------------------------------------------------------------------- ## ## Copyright 1996-2016 The NASM Authors - All Rights Reserved ## See the file AUTHORS included with the NASM distribution for ## the specific copyright holders. ## ## Redistribution and use in source and binary forms, with or without ## modification, are permitted provided that the following ## conditions are met: ## ## * Redistributions of source code must retain the above copyright ## notice, this list of conditions and the following disclaimer. ## * Redistributions in binary form must reproduce the above ## copyright notice, this list of conditions and the following ## disclaimer in the documentation and/or other materials provided ## with the distribution. ## ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND ## CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, ## INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ## DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ## NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ## HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN ## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ## OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, ## EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ## ## -------------------------------------------------------------------------- # The token parameters are in the other: # TOKEN_TYPE, t_inttwo, t_flags, t_integer # # * is replaced with the token name converted to upper case. # {xxx*yyy} is replaced with the token name stripped from the prefix # xxx and suffix yyy before converting to upper case. # # Tokens other than instructions and registers # # The ? operator is a keyword, because ? is a legitimate symbol character % TOKEN_QMARK, 0, 0, 0 ? % TOKEN_PREFIX, 0, 0, P_* a16 a32 a64 asp lock o16 o32 o64 osp rep repe repne repnz repz times wait xacquire xrelease bnd nobnd % TOKEN_SIZE, SIZE_*, 0, S_* byte word dword qword tword oword yword zword % TOKEN_SPECIAL, 0, 0, S_* abs far long near nosplit rel short strict to # PTR is a legitimate symbol, but has an optional warning % TOKEN_ID, 0, TFLAG_WARN, 0 ptr # DUP is a legitimate symbol, but also has context-specific use in extops % TOKEN_ID, 0, TFLAG_DUP, 0 dup % TOKEN_FLOAT, 0, 0, 0 __?infinity?__ __?nan?__ __?qnan?__ __?snan?__ % TOKEN_FLOATIZE, 0, 0, FLOAT_{__?float*?__} __?float8?__ __?float16?__ __?float32?__ __?float64?__ __?float80m?__ __?float80e?__ __?float128l?__ __?float128h?__ % TOKEN_STRFUNC, 0, 0, STRFUNC_{__?*?__} __?utf16?__ __?utf16le?__ __?utf16be?__ __?utf32?__ __?utf32le?__ __?utf32be?__ % TOKEN_IFUNC, 0, 0, IFUNC_{__?*?__} __?ilog2e?__ __?ilog2w?__ __?ilog2f?__ __?ilog2c?__ % TOKEN_*, 0, 0, 0 seg wrt % TOKEN_{__?*?__}, 0, 0, 0 __?masm_ptr?__ __?masm_flat?__ % TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO{1to*} 1to2 1to4 1to8 1to16 % TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_{*-sae} rn-sae rd-sae ru-sae rz-sae % TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_* sae z % TOKEN_PREFIX, 0, TFLAG_BRC, P_* evex vex3 vex2 # Multi-character operators. Used in ppscan(). % TOKEN_SHR, 0, 0, 0 >> % TOKEN_SAR, 0, 0, 0 >>> % TOKEN_SHL, 0, 0, 0 << <<< % TOKEN_SDIV, 0, 0, 0 // % TOKEN_SMOD, 0, 0, 0 %% % TOKEN_EQ, 0, 0, 0 == % TOKEN_NE, 0, 0, 0 != <> % TOKEN_LE, 0, 0, 0 <= % TOKEN_GE, 0, 0, 0 >= % TOKEN_LEG, 0, 0, 0 <=> % TOKEN_DBL_AND, 0, 0, 0 && % TOKEN_DBL_OR, 0, 0, 0 || % TOKEN_DBL_XOR, 0, 0, 0 ^^