0
0
mirror of https://github.com/netwide-assembler/nasm.git synced 2025-07-24 10:25:42 -04:00
nasm/asm/tokens.dat
H. Peter Anvin 6389ac8e47 scanner: generalize the handling of {dfv=}
Change the handling of {dfv=} to a more general "braced constant"
expression, to be tagged with an instruction flag to make sure they
match the instruction in question.

This really ought to be an operand flag, but the opflags are precious;
as the CCMP/CTEST instructions can also take an immediate it probably
is necessary to invent a "special immediate" operand type that can
fold these together.

Signed-off-by: H. Peter Anvin <hpa@zytor.com>
2024-07-27 18:06:51 -07:00

223 lines
4.1 KiB
Plaintext

## --------------------------------------------------------------------------
##
## Copyright 1996-2021 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, PPS_ASIZE, 0, P_*
a16
a32
a64
asp
% TOKEN_PREFIX, PPS_LOCK, 0, P_*
lock
% TOKEN_PREFIX, PPS_OSIZE, 0, P_*
o16
o32
o64
osp
% TOKEN_PREFIX, PPS_REP, 0, P_*
rep
repe
repne
repnz
repz
xacquire
xrelease
bnd
nobnd
% TOKEN_PREFIX, PPS_WAIT, 0, P_*
wait
% TOKEN_PREFIX, PPS_REX, TFLAG_BRC, P_*
rex
evex
vex
vex3
vex2
% 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_FLOATIZE, 0, 0, FLOAT_B{__?bfloat*?__}
__?bfloat16?__
% 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
times
% TOKEN_{__?*?__}, 0, 0, 0
__?masm_ptr?__
__?masm_flat?__
% TOKEN_DECORATOR, 0, TFLAG_BRC | TFLAG_BRDCAST , BRC_1TO{1to*}
1to2
1to4
1to8
1to16
1to32
% TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_{*-sae}
rn-sae
rd-sae
ru-sae
rz-sae
% TOKEN_DECORATOR, 0, TFLAG_BRC, BRC_*
sae
z
% TOKEN_BRCCONST, IF_DFV, TFLAG_BRC, 0
dfv=
% TOKEN_BRCCONST, IF_DFV, TFLAG_BRC | TFLAG_ORBIT, DFV_{dfv=*}
dfv=cf
dfv=zf
dfv=sf
dfv=of
# 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
^^