1 /****************************************************************************
2 *
3 * Description:  table of non-instruction reserved words:
4 *               - registers,
5 *               - predefined types
6 *               - operators (unary + binary),
7 *               - language types
8 *               for directives see directve.h!
9 *               for instructions see instruct.h!
10 *
11 ****************************************************************************/
12 
13 /* v1.96: items needn't be sorted anymore!
14  * The items are stored in structures of type special_item.
15  * If an item is inserted, moved or deleted, the project needs
16  * a full rebuild.
17  */
18 
19 /* field usage:
20  * type   = RWT_ value    SpecialTable.type   uint_8
21  * value  =      flags    SpecialTable.value  unsigned
22  * bytval =      value    SpecialTable.bytval uint_8
23  * flags  = RWF_ flags    ResWordTable.flags  uint_8
24  * cpu    = cpu  flags    SpecialTable.cpu    uint_16
25  * sflags =               SpecialTable.sflags unsigned
26  * for registers, the 'value' field contains OP_ flags.
27  * Since this field has type unsigned, it may be 16-bits wide only.
28  * This is no problem, since all register-related flags are in the low word.
29  */
30 /* token str    type        value    bytval    flags  cpu     sflags */
31 
32 /* registers AH-BH must be consecutive, start with AH and end with BH */
33 
34 res(AL,   al,   RWT_REG,    OP_AL,      0,       0,   P_86,    1)
35 res(CL,   cl,   RWT_REG,    OP_CL,      1,       0,   P_86,    1)
36 res(DL,   dl,   RWT_REG,    OP_R8,      2,       0,   P_86,    1)
37 res(BL,   bl,   RWT_REG,    OP_R8,      3,       0,   P_86,    1)
38 res(AH,   ah,   RWT_REG,    OP_R8,      4,       0,   P_86,    1)
39 res(CH,   ch,   RWT_REG,    OP_R8,      5,       0,   P_86,    1)
40 res(DH,   dh,   RWT_REG,    OP_R8,      6,       0,   P_86,    1)
41 res(BH,   bh,   RWT_REG,    OP_R8,      7,       0,   P_86,    1)
42 
43 res(AX,   ax,   RWT_REG,    OP_AX,      0,       0,   P_86,    2)
44 res(CX,   cx,   RWT_REG,    OP_R16,     1,       0,   P_86,    2)
45 res(DX,   dx,   RWT_REG,    OP_DX,      2,       0,   P_86,    2)
46 res(BX,   bx,   RWT_REG,    OP_R16,     3,       0,   P_86,    SFR_IREG|2)
47 res(SP,   sp,   RWT_REG,    OP_R16,     4,       0,   P_86,    2)
48 res(BP,   bp,   RWT_REG,    OP_R16,     5,       0,   P_86,    SFR_SSBASED|SFR_IREG|2)
49 res(SI,   si,   RWT_REG,    OP_R16,     6,       0,   P_86,    SFR_IREG|2)
50 res(DI,   di,   RWT_REG,    OP_R16,     7,       0,   P_86,    SFR_IREG|2)
51 
52 res(EAX,  eax,  RWT_REG,    OP_EAX,     0,       0,   P_386,   SFR_IREG|4)
53 res(ECX,  ecx,  RWT_REG,    OP_R32,     1,       0,   P_386,   SFR_IREG|4)
54 res(EDX,  edx,  RWT_REG,    OP_R32,     2,       0,   P_386,   SFR_IREG|4)
55 res(EBX,  ebx,  RWT_REG,    OP_R32,     3,       0,   P_386,   SFR_IREG|4)
56 res(ESP,  esp,  RWT_REG,    OP_R32,     4,       0,   P_386,   SFR_SSBASED|SFR_IREG|4)
57 res(EBP,  ebp,  RWT_REG,    OP_R32,     5,       0,   P_386,   SFR_SSBASED|SFR_IREG|4)
58 res(ESI,  esi,  RWT_REG,    OP_R32,     6,       0,   P_386,   SFR_IREG|4)
59 res(EDI,  edi,  RWT_REG,    OP_R32,     7,       0,   P_386,   SFR_IREG|4)
60 
61 /* registers ES-GS must be consecutive */
62 res(ES,   es,   RWT_REG,    OP_SR86,    0,       0,   P_86,    0)
63 res(CS,   cs,   RWT_REG,    OP_SR86,    1,       0,   P_86,    0)
64 res(SS,   ss,   RWT_REG,    OP_SR86,    2,       0,   P_86,    0)
65 res(DS,   ds,   RWT_REG,    OP_SR86,    3,       0,   P_86,    0)
66 res(FS,   fs,   RWT_REG,    OP_SR386,   4,       0,   P_386,   0)
67 res(GS,   gs,   RWT_REG,    OP_SR386,   5,       0,   P_386,   0)
68 
69 res(ST,   st,   RWT_REG,    OP_ST,      0,       0,   P_87,    10)
70 
71 res(MM0,  mm0,  RWT_REG,    OP_MMX,     0,       0,   P_MMX,   8)
72 res(MM1,  mm1,  RWT_REG,    OP_MMX,     1,       0,   P_MMX,   8)
73 res(MM2,  mm2,  RWT_REG,    OP_MMX,     2,       0,   P_MMX,   8)
74 res(MM3,  mm3,  RWT_REG,    OP_MMX,     3,       0,   P_MMX,   8)
75 res(MM4,  mm4,  RWT_REG,    OP_MMX,     4,       0,   P_MMX,   8)
76 res(MM5,  mm5,  RWT_REG,    OP_MMX,     5,       0,   P_MMX,   8)
77 res(MM6,  mm6,  RWT_REG,    OP_MMX,     6,       0,   P_MMX,   8)
78 res(MM7,  mm7,  RWT_REG,    OP_MMX,     7,       0,   P_MMX,   8)
79 
80 res(XMM0, xmm0, RWT_REG,    OP_XMM,     0,       0,   P_SSE1,  16)
81 res(XMM1, xmm1, RWT_REG,    OP_XMM,     1,       0,   P_SSE1,  16)
82 res(XMM2, xmm2, RWT_REG,    OP_XMM,     2,       0,   P_SSE1,  16)
83 res(XMM3, xmm3, RWT_REG,    OP_XMM,     3,       0,   P_SSE1,  16)
84 res(XMM4, xmm4, RWT_REG,    OP_XMM,     4,       0,   P_SSE1,  16)
85 res(XMM5, xmm5, RWT_REG,    OP_XMM,     5,       0,   P_SSE1,  16)
86 res(XMM6, xmm6, RWT_REG,    OP_XMM,     6,       0,   P_SSE1,  16)
87 res(XMM7, xmm7, RWT_REG,    OP_XMM,     7,       0,   P_SSE1,  16)
88 #if AVXSUPP
89 res(YMM0, ymm0, RWT_REG,    OP_YMM,     0,       0,   P_AVX,   32)
90 res(YMM1, ymm1, RWT_REG,    OP_YMM,     1,       0,   P_AVX,   32)
91 res(YMM2, ymm2, RWT_REG,    OP_YMM,     2,       0,   P_AVX,   32)
92 res(YMM3, ymm3, RWT_REG,    OP_YMM,     3,       0,   P_AVX,   32)
93 res(YMM4, ymm4, RWT_REG,    OP_YMM,     4,       0,   P_AVX,   32)
94 res(YMM5, ymm5, RWT_REG,    OP_YMM,     5,       0,   P_AVX,   32)
95 res(YMM6, ymm6, RWT_REG,    OP_YMM,     6,       0,   P_AVX,   32)
96 res(YMM7, ymm7, RWT_REG,    OP_YMM,     7,       0,   P_AVX,   32)
97 #endif
98 
99 res(CR0,  cr0,  RWT_REG,    OP_RSPEC,   0,       0,   P_386,   0)
100 res(CR2,  cr2,  RWT_REG,    OP_RSPEC,   2,       0,   P_386,   0)
101 res(CR3,  cr3,  RWT_REG,    OP_RSPEC,   3,       0,   P_386,   0)
102 res(CR4,  cr4,  RWT_REG,    OP_RSPEC,   4,       0,   P_586,   0)
103 res(DR0,  dr0,  RWT_REG,    OP_RSPEC,   0|0x10,  0,   P_386,   0)
104 res(DR1,  dr1,  RWT_REG,    OP_RSPEC,   1|0x10,  0,   P_386,   0)
105 res(DR2,  dr2,  RWT_REG,    OP_RSPEC,   2|0x10,  0,   P_386,   0)
106 res(DR3,  dr3,  RWT_REG,    OP_RSPEC,   3|0x10,  0,   P_386,   0)
107 res(DR6,  dr6,  RWT_REG,    OP_RSPEC,   6|0x10,  0,   P_386,   0)
108 res(DR7,  dr7,  RWT_REG,    OP_RSPEC,   7|0x10,  0,   P_386,   0)
109 /* v2.11: add RWF_IA32 to TRx registers */
110 res(TR3,  tr3,  RWT_REG,    OP_RSPEC,   3|0x20,RWF_IA32,P_486, 0)
111 res(TR4,  tr4,  RWT_REG,    OP_RSPEC,   4|0x20,RWF_IA32,P_486, 0)
112 res(TR5,  tr5,  RWT_REG,    OP_RSPEC,   5|0x20,RWF_IA32,P_486, 0)
113 res(TR6,  tr6,  RWT_REG,    OP_RSPEC,   6|0x20,RWF_IA32,P_386, 0)
114 res(TR7,  tr7,  RWT_REG,    OP_RSPEC,   7|0x20,RWF_IA32,P_386, 0)
115 
116 #if AMD64_SUPPORT
117 
118 /* for simplicity, all x64 reserved words must be consecutive
119  * ( see Set64Bit() in parser.c ).
120  */
121 
122 res(SPL,  spl,  RWT_REG,    OP_R8,      4, RWF_X64,    P_64,   1)
123 res(BPL,  bpl,  RWT_REG,    OP_R8,      5, RWF_X64,    P_64,   1)
124 res(SIL,  sil,  RWT_REG,    OP_R8,      6, RWF_X64,    P_64,   1)
125 res(DIL,  dil,  RWT_REG,    OP_R8,      7, RWF_X64,    P_64,   1)
126 res(R8B,  r8b,  RWT_REG,    OP_R8,      8, RWF_X64,    P_64,   1)
127 res(R9B,  r9b,  RWT_REG,    OP_R8,      9, RWF_X64,    P_64,   1)
128 res(R10B, r10b, RWT_REG,    OP_R8,     10, RWF_X64,    P_64,   1)
129 res(R11B, r11b, RWT_REG,    OP_R8,     11, RWF_X64,    P_64,   1)
130 res(R12B, r12b, RWT_REG,    OP_R8,     12, RWF_X64,    P_64,   1)
131 res(R13B, r13b, RWT_REG,    OP_R8,     13, RWF_X64,    P_64,   1)
132 res(R14B, r14b, RWT_REG,    OP_R8,     14, RWF_X64,    P_64,   1)
133 res(R15B, r15b, RWT_REG,    OP_R8,     15, RWF_X64,    P_64,   1)
134 
135 res(R8W,  r8w,  RWT_REG,    OP_R16,     8, RWF_X64,    P_64,   2)
136 res(R9W,  r9w,  RWT_REG,    OP_R16,     9, RWF_X64,    P_64,   2)
137 res(R10W, r10w, RWT_REG,    OP_R16,    10, RWF_X64,    P_64,   2)
138 res(R11W, r11w, RWT_REG,    OP_R16,    11, RWF_X64,    P_64,   2)
139 res(R12W, r12w, RWT_REG,    OP_R16,    12, RWF_X64,    P_64,   2)
140 res(R13W, r13w, RWT_REG,    OP_R16,    13, RWF_X64,    P_64,   2)
141 res(R14W, r14w, RWT_REG,    OP_R16,    14, RWF_X64,    P_64,   2)
142 res(R15W, r15w, RWT_REG,    OP_R16,    15, RWF_X64,    P_64,   2)
143 
144 res(R8D,  r8d,  RWT_REG,    OP_R32,     8, RWF_X64,    P_64,   SFR_IREG|4)
145 res(R9D,  r9d,  RWT_REG,    OP_R32,     9, RWF_X64,    P_64,   SFR_IREG|4)
146 res(R10D, r10d, RWT_REG,    OP_R32,    10, RWF_X64,    P_64,   SFR_IREG|4)
147 res(R11D, r11d, RWT_REG,    OP_R32,    11, RWF_X64,    P_64,   SFR_IREG|4)
148 res(R12D, r12d, RWT_REG,    OP_R32,    12, RWF_X64,    P_64,   SFR_IREG|4)
149 res(R13D, r13d, RWT_REG,    OP_R32,    13, RWF_X64,    P_64,   SFR_IREG|4)
150 res(R14D, r14d, RWT_REG,    OP_R32,    14, RWF_X64,    P_64,   SFR_IREG|4)
151 res(R15D, r15d, RWT_REG,    OP_R32,    15, RWF_X64,    P_64,   SFR_IREG|4)
152 
153 res(RAX,  rax,  RWT_REG,    OP_RAX,     0, RWF_X64,    P_64,   SFR_IREG|8)
154 res(RCX,  rcx,  RWT_REG,    OP_R64,     1, RWF_X64,    P_64,   SFR_IREG|8)
155 res(RDX,  rdx,  RWT_REG,    OP_R64,     2, RWF_X64,    P_64,   SFR_IREG|8)
156 res(RBX,  rbx,  RWT_REG,    OP_R64,     3, RWF_X64,    P_64,   SFR_IREG|8)
157 res(RSP,  rsp,  RWT_REG,    OP_R64,     4, RWF_X64,    P_64,   SFR_SSBASED|SFR_IREG|8)
158 res(RBP,  rbp,  RWT_REG,    OP_R64,     5, RWF_X64,    P_64,   SFR_SSBASED|SFR_IREG|8)
159 res(RSI,  rsi,  RWT_REG,    OP_R64,     6, RWF_X64,    P_64,   SFR_IREG|8)
160 res(RDI,  rdi,  RWT_REG,    OP_R64,     7, RWF_X64,    P_64,   SFR_IREG|8)
161 res(R8,   r8,   RWT_REG,    OP_R64,     8, RWF_X64,    P_64,   SFR_IREG|8)
162 res(R9,   r9,   RWT_REG,    OP_R64,     9, RWF_X64,    P_64,   SFR_IREG|8)
163 res(R10,  r10,  RWT_REG,    OP_R64,    10, RWF_X64,    P_64,   SFR_IREG|8)
164 res(R11,  r11,  RWT_REG,    OP_R64,    11, RWF_X64,    P_64,   SFR_IREG|8)
165 res(R12,  r12,  RWT_REG,    OP_R64,    12, RWF_X64,    P_64,   SFR_IREG|8)
166 res(R13,  r13,  RWT_REG,    OP_R64,    13, RWF_X64,    P_64,   SFR_IREG|8)
167 res(R14,  r14,  RWT_REG,    OP_R64,    14, RWF_X64,    P_64,   SFR_IREG|8)
168 res(R15,  r15,  RWT_REG,    OP_R64,    15, RWF_X64,    P_64,   SFR_IREG|8)
169 
170 res(XMM8, xmm8, RWT_REG,    OP_XMM,     8, RWF_X64,    P_64,   16)
171 res(XMM9, xmm9, RWT_REG,    OP_XMM,     9, RWF_X64,    P_64,   16)
172 res(XMM10,xmm10,RWT_REG,    OP_XMM,    10, RWF_X64,    P_64,   16)
173 res(XMM11,xmm11,RWT_REG,    OP_XMM,    11, RWF_X64,    P_64,   16)
174 res(XMM12,xmm12,RWT_REG,    OP_XMM,    12, RWF_X64,    P_64,   16)
175 res(XMM13,xmm13,RWT_REG,    OP_XMM,    13, RWF_X64,    P_64,   16)
176 res(XMM14,xmm14,RWT_REG,    OP_XMM,    14, RWF_X64,    P_64,   16)
177 res(XMM15,xmm15,RWT_REG,    OP_XMM,    15, RWF_X64,    P_64,   16)
178 #if AVXSUPP
179 res(YMM8, ymm8, RWT_REG,    OP_YMM,     8, RWF_X64,    P_AVX|P_64,  32)
180 res(YMM9, ymm9, RWT_REG,    OP_YMM,     9, RWF_X64,    P_AVX|P_64,  32)
181 res(YMM10,ymm10,RWT_REG,    OP_YMM,    10, RWF_X64,    P_AVX|P_64,  32)
182 res(YMM11,ymm11,RWT_REG,    OP_YMM,    11, RWF_X64,    P_AVX|P_64,  32)
183 res(YMM12,ymm12,RWT_REG,    OP_YMM,    12, RWF_X64,    P_AVX|P_64,  32)
184 res(YMM13,ymm13,RWT_REG,    OP_YMM,    13, RWF_X64,    P_AVX|P_64,  32)
185 res(YMM14,ymm14,RWT_REG,    OP_YMM,    14, RWF_X64,    P_AVX|P_64,  32)
186 res(YMM15,ymm15,RWT_REG,    OP_YMM,    15, RWF_X64,    P_AVX|P_64,  32)
187 #endif
188 
189 res(CR8,  cr8,  RWT_REG,    OP_RSPEC,   8, RWF_X64,    P_64,   0)
190 
191 #endif
192 
193 /* predefined types. BYTE must be first! */
194 /* token    str      type        value      bytval   flags cpu     sflags */
195 
196 res(BYTE,   byte,    RWT_STYPE,  0,         MT_BYTE,    0, P_86,    USE_EMPTY)
197 res(SBYTE,  sbyte,   RWT_STYPE,  0,         MT_SBYTE,   0, P_86,    USE_EMPTY)
198 res(WORD,   word,    RWT_STYPE,  0,         MT_WORD,    0, P_86,    USE_EMPTY)
199 res(SWORD,  sword,   RWT_STYPE,  0,         MT_SWORD,   0, P_86,    USE_EMPTY)
200 res(DWORD,  dword,   RWT_STYPE,  0,         MT_DWORD,   0, P_86,    USE_EMPTY)
201 res(SDWORD, sdword,  RWT_STYPE,  0,         MT_SDWORD,  0, P_86,    USE_EMPTY)
202 res(REAL4,  real4,   RWT_STYPE,  0,         MT_REAL4,   0, P_86,    USE_EMPTY)
203 res(FWORD,  fword,   RWT_STYPE,  0,         MT_FWORD,   0, P_86,    USE_EMPTY)
204 res(QWORD,  qword,   RWT_STYPE,  0,         MT_QWORD,   0, P_86,    USE_EMPTY)
205 res(SQWORD, sqword,  RWT_STYPE,  0,         MT_SQWORD,  0, P_86,    USE_EMPTY)
206 res(REAL8,  real8,   RWT_STYPE,  0,         MT_REAL8,   0, P_86,    USE_EMPTY)
207 res(TBYTE,  tbyte,   RWT_STYPE,  0,         MT_TBYTE,   0, P_86,    USE_EMPTY)
208 res(REAL10, real10,  RWT_STYPE,  0,         MT_REAL10,  0, P_86,    USE_EMPTY)
209 res(OWORD,  oword,   RWT_STYPE,  0,         MT_OWORD,   0, P_86,    USE_EMPTY)
210 #if AVXSUPP
211 res(YMMWORD,ymmword, RWT_STYPE,  0,         MT_YMMWORD, 0, P_AVX,   USE_EMPTY)
212 #endif
213 /* NEAR must be first, FAR32 must be last, all contiguous */
214 res(NEAR,   near,    RWT_STYPE,  0,         MT_NEAR,    0, P_86,    USE_EMPTY)
215 res(FAR,    far,     RWT_STYPE,  0,         MT_FAR,     0, P_86,    USE_EMPTY)
216 res(NEAR16, near16,  RWT_STYPE,  0,         MT_NEAR,    0, P_386,   USE16)
217 res(NEAR32, near32,  RWT_STYPE,  0,         MT_NEAR,    0, P_386,   USE32)
218 res(FAR16,  far16,   RWT_STYPE,  0,         MT_FAR,     0, P_386,   USE16)
219 res(FAR32,  far32,   RWT_STYPE,  0,         MT_FAR,     0, P_386,   USE32)
220 #if XMMWORD
221 res(MMWORD, mmword,  RWT_STYPE,  0,         MT_QWORD,   0, P_586|P_MMX, USE_EMPTY)
222 res(XMMWORD,xmmword, RWT_STYPE,  0,         MT_OWORD,   0, P_686|P_SSE1, USE_EMPTY)
223 #endif
224 
225 /* unary operators. bytval contains priority */
226 /* token        str           type          value   bytval flags cpu  sflags */
227 res(DOT_TYPE,   .type,        RWT_UNARY_OP, AT_ALL,    14,  0,   P_86,  UOT_DOT_TYPE  )
228 res(HIGH,       high,         RWT_UNARY_OP, AT_TLN,     6,  0,   P_86,  UOT_HIGH      )
229 #if LOHI32
230 res(HIGH32,     high32,       RWT_UNARY_OP, AT_CONST | AT_FLOAT, 6,  0,   P_86,  UOT_HIGH32    )
231 #endif
232 res(HIGHWORD,   highword,     RWT_UNARY_OP, AT_CONST,   6,  0,   P_86,  UOT_HIGHWORD  )
233 #if IMAGERELSUPP
234 /* v2.10: changed AT_TLN to AT_LABEL */
235 //res(IMAGEREL,   imagerel,     RWT_UNARY_OP, AT_TLN,     5,  0,   P_86,  UOT_IMAGEREL  )
236 res(IMAGEREL,   imagerel,     RWT_UNARY_OP, AT_LABEL,   5,  0,   P_86,  UOT_IMAGEREL  )
237 #endif
238 res(LENGTH,     length,       RWT_UNARY_OP, AT_LF,      3,  0,   P_86,  UOT_LENGTH    )
239 res(LENGTHOF,   lengthof,     RWT_UNARY_OP, AT_LF,      3,  0,   P_86,  UOT_LENGTHOF  )
240 res(LOW,        low,          RWT_UNARY_OP, AT_TLN,     6,  0,   P_86,  UOT_LOW       )
241 #if LOHI32
242 res(LOW32,      low32,        RWT_UNARY_OP, AT_TLN | AT_FLOAT,  6,  0,   P_86,  UOT_LOW32     )
243 #endif
244 res(LOWWORD,    lowword,      RWT_UNARY_OP, AT_TLN,     6,  0,   P_86,  UOT_LOWWORD   )
245 res(LROFFSET,   lroffset,     RWT_UNARY_OP, AT_LFN,     5,  0,   P_86,  UOT_LROFFSET  )
246 res(MASK,       mask,         RWT_UNARY_OP, AT_TBF,     3,  0,   P_86,  UOT_MASK      )
247 res(OFFSET,     offset,       RWT_UNARY_OP, AT_TLFN,    5,  0,   P_86,  UOT_OFFSET    )
248 res(OPATTR,     opattr,       RWT_UNARY_OP, AT_ALL,    14,  0,   P_86,  UOT_OPATTR    )
249 #if SECTIONRELSUPP
250 res(SECTIONREL, sectionrel,   RWT_UNARY_OP, AT_LABEL,   5,  0,   P_86,  UOT_SECTIONREL)
251 #endif
252 res(SEG,        seg,          RWT_UNARY_OP, AT_LABEL,   5,  0,   P_86,  UOT_SEG       )
253 res(SHORT,      short,        RWT_UNARY_OP, AT_LABEL,  14,  0,   P_86,  UOT_SHORT     )
254 res(SIZE,       size,         RWT_UNARY_OP, AT_TLF,     3,  0,   P_86,  UOT_SIZE      )
255 res(SIZEOF,     sizeof,       RWT_UNARY_OP, AT_TLF,     3,  0,   P_86,  UOT_SIZEOF    )
256 res(THIS,       this,         RWT_UNARY_OP, AT_TYPE,    5,  0,   P_86,  UOT_THIS      )
257 res(TYPE,       type,         RWT_UNARY_OP, AT_ALL,     5,  0,   P_86,  UOT_TYPE      )
258 res(WIDTH,      width,        RWT_UNARY_OP, AT_TBF,     3,  0,   P_86,  UOT_WIDTH     )
259 
260 /* binary operators. bytval contains priority */
261 
262 /* token  str   type             value  bytval flags cpu      sflags */
263 res(EQ,   eq,   RWT_BINARY_OP,       0,     10,  0,  P_86,        0)
264 res(NE,   ne,   RWT_BINARY_OP,       0,     10,  0,  P_86,        0)
265 res(GE,   ge,   RWT_BINARY_OP,       0,     10,  0,  P_86,        0)
266 res(GT,   gt,   RWT_BINARY_OP,       0,     10,  0,  P_86,        0)
267 res(LE,   le,   RWT_BINARY_OP,       0,     10,  0,  P_86,        0)
268 res(LT,   lt,   RWT_BINARY_OP,       0,     10,  0,  P_86,        0)
269 res(MOD,  mod,  RWT_BINARY_OP,       0,      8,  0,  P_86,        0)
270 res(PTR,  ptr,  RWT_BINARY_OP,       0,      4,  0,  P_86,        0)
271 
272 /* DUP is also a binary operator, but must be handled differently. */
273 
274 res(DUP,    dup,   RWT_RES_ID,  0,   0, 0,   P_86,        0)
275 res(ADDR,   addr,  RWT_RES_ID,  0,   0, 0,   P_86,        0)
276 res(FLAT,   flat,  RWT_RES_ID,  0,   0, 0,   P_86,        0)
277 res(VARARG, vararg,RWT_RES_ID,  0,   0, 0,   P_86,        0)
278 #if AMD64_SUPPORT
279 res(FRAME,  frame, RWT_RES_ID,  0,   0, RWF_X64, P_64,    0)
280 #endif
281 
282 /* languages, must be in this order! */
283 /* token      str          type       value bytval        flags     cpu  sflags */
284 res(C,        c,           RWT_RES_ID, 0,   LANG_C,         0,      P_86,  0)
285 res(SYSCALL,  syscall,     RWT_RES_ID, 0,   LANG_SYSCALL,   0,      P_86,  0)
286 res(STDCALL,  stdcall,     RWT_RES_ID, 0,   LANG_STDCALL,   0,      P_86,  0)
287 res(PASCAL,   pascal,      RWT_RES_ID, 0,   LANG_PASCAL,    0,      P_86,  0)
288 res(FORTRAN,  fortran,     RWT_RES_ID, 0,   LANG_FORTRAN,   0,      P_86,  0)
289 res(BASIC,    basic,       RWT_RES_ID, 0,   LANG_BASIC,     0,      P_86,  0)
290 res(FASTCALL, fastcall,    RWT_RES_ID, 0,   LANG_FASTCALL,  0,      P_86,  0)
291 
292