1 /******************************************************************************
2 *
3 * Copyright (C) 2006, The Gentee Group. All rights reserved.
4 * This file is part of the Gentee open source project - http://www.gentee.com.
5 *
6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
8 * ACCEPTANCE OF THE AGREEMENT.
9 *
10 * ID: gasm 18.10.06 0.0.A.
11 *
12 * Author: Alexey Krivonogov ( gentee )
13 *
14 * Contributors: Sergey Kurganov ( pretorian )
15 *
16 * Summary: ASM lexical table
17 *
18 ******************************************************************************/
19
20 <gasm prefix = "ASM_" desc = "Assembler sources" gout =
21 "..\..\example\asm\lexasm.g"
22 binout2 = "..\..\example\asm\lexasm.lex" >
23 <MAIN cmd = SKIP >
24 <_ hexch = '0A' cmd = LINE pos itcmd />
25 <_ ch = ',' cmd = SYSCHAR pos itcmd value />
26 <_ ch = '[' cmd = SYSCHAR pos itcmd value />
27 <_ ch = ']' cmd = SYSCHAR pos itcmd value />
28 <_ ch = '+' cmd = SYSCHAR pos itcmd value />
29 <_ ch = '-' cmd = SYSCHAR pos itcmd value />
30 <_ ch = '/' state = ISCOMMENT pos/>
31 <_ ch = '0' state = ISNUMBER pos cmd = NUMBER itcmd />
32 <_ range = '19' state = DECIMAL pos cmd = NUMBER itcmd />
33 <_ name state = NAME pos itstate keyword/>
34 </>
35 <ISCOMMENT state = MAIN stay >
36 <_ ch = '*' state = COMMENT />
37 <_ ch = '/' state = LINECOMMENT />
38 </>
39 <COMMENT cmd = SKIP comment = "Comment /* ... */">
40 <_ multi = '*/' cmd = SKIP state = MAIN />
41 </>
42 <LINECOMMENT cmd = SKIP comment = "Comment //... ">
43 <_ hexch = '0D0A' state = MAIN stay />
44 </>
45 <NAME state = MAIN stay comment = "Name identifier">
46 <_ numname cmd = OK />
47 <_ ch = ':' cmd = OK state = MAIN />
48 </>
49 <ISNUMBER state = MAIN stay >
50 <_ range = '09' state = DECIMAL cmd = OK />
51 <_ ch = 'xX' state = HEX cmd = OK />
52 <_ ch = '&' state = BIN cmd = OK />
53 </>
54 <DECIMAL state = MAIN stay >
55 <_ range = '09' cmd = OK />
56 </>
57 <HEX state = MAIN stay >
58 <_ numhex cmd = OK />
59 </>
60 <BIN state = MAIN stay >
61 <_ ch = '01' cmd = OK />
62 </>
63 <commands skip>
64 <LINE comment = "New line 0x0D0A or 0x0A" />
65 <SYSCHAR comment = "System character ', [ ] + - '" />
66 <NUMBER comment = "Number decimal, hexadecimal or binary" />
67 </commands>
68 <keywords skip ignore>
69 <_= AH id = 0x00/>
70 <_= AL id = 0x01/>
71 <_= BH id = 0x02/>
72 <_= BL id = 0x03/>
73 <_= CH id = 0x04/>
74 <_= CL id = 0x05/>
75 <_= DH id = 0x06/>
76 <_= DL id = 0x07/>
77
78 <_= AX id = 0x08/>
79 <_= BX id = 0x09/>
80 <_= CX id = 0x0A/>
81 <_= DX id = 0x0B/>
82
83 <_= EAX id = 0x10/>
84 <_= ECX id = 0x11/>
85 <_= EDX id = 0x12/>
86 <_= EBX id = 0x13/>
87 <_= ESP id = 0x14/>
88 <_= EBP id = 0x15/>
89 <_= ESI id = 0x16/>
90 <_= EDI id = 0x17/>
91
92 <_= CR0 id = 0x20/>
93 <_= CR1 id = 0x21/>
94 <_= CR2 id = 0x22/>
95 <_= CR3 id = 0x23/>
96 <_= DR0 id = 0x24/>
97 <_= DR1 id = 0x25/>
98 <_= DR2 id = 0x26/>
99 <_= DR3 id = 0x27/>
100 <_= DR4 id = 0x28/>
101 <_= DR5 id = 0x29/>
102 <_= DR6 id = 0x2A/>
103 <_= DR7 id = 0x2B/>
104
105 <_= JA id = 0x40/>
106 <_= JAE id = 0x41/>
107 <_= JB id = 0x42/>
108 <_= JBE id = 0x43/>
109 <_= JC id = 0x44/>
110 <_= JCXZ id = 0x45/>
111 <_= JE id = 0x46/>
112 <_= JECXZ id = 0x47/>
113 <_= JG id = 0x48/>
114 <_= JGE id = 0x49/>
115 <_= JL id = 0x4A/>
116 <_= JLE id = 0x4B/>
117 <_= JNA id = 0x4C/>
118 <_= JNAE id = 0x4D/>
119 <_= JNB id = 0x4E/>
120 <_= JNBE id = 0x4F/>
121 <_= JNC id = 0x50/>
122 <_= JNE id = 0x51/>
123 <_= JNG id = 0x52/>
124 <_= JNGE id = 0x53/>
125 <_= JNL id = 0x54/>
126 <_= JNLE id = 0x55/>
127 <_= JNO id = 0x56/>
128 <_= JNP id = 0x57/>
129 <_= JNS id = 0x58/>
130 <_= JNZ id = 0x59/>
131 <_= JO id = 0x5A/>
132 <_= JP id = 0x5B/>
133 <_= JS id = 0x5C/>
134 <_= JZ id = 0x5D/>
135 <_= LOOP id = 0x5E/>
136 <_= LOOPE id = 0x5F/>
137 <_= LOOPNE id = 0x60/>
138 <_= LOOPNZ id = 0x61/>
139 <_= REP id = 0x62/>
140 <_= REPE id = 0x63/>
141 <_= REPZ id = 0x64/>
142 <_= REPNE id = 0x65/>
143 <_= REPNZ id = 0x66/>
144 <_= CALL id = 0x67/>
145
146 <_= CMP id = 0x80/>
147 <_= MPS id = 0x81/>
148 <_= CMPSB id = 0x82/>
149 <_= CMPSW id = 0x83/>
150 <_= CMPSD id = 0x84/>
151 <_= TEST id = 0x85/>
152 <_= ADC id = 0x86/>
153 <_= ADD id = 0x87/>
154 <_= DEC id = 0x88/>
155 <_= DIV id = 0x89/>
156 <_= IDIV id = 0x8A/>
157 <_= IMUL id = 0x8B/>
158 <_= INC id = 0x8C/>
159 <_= MUL id = 0x8D/>
160 <_= RCL id = 0x8E/>
161 <_= ROL id = 0x8F/>
162 <_= RCR id = 0x90/>
163 <_= ROR id = 0x91/>
164 <_= SAL id = 0x92/>
165 <_= SHL id = 0x93/>
166 <_= SAR id = 0x94/>
167 <_= SHR id = 0x95/>
168 <_= SUB id = 0x96/>
169 <_= AND id = 0x97/>
170 <_= OR id = 0x98/>
171 <_= XOR id = 0x99/>
172 <_= NOT id = 0x9A/>
173 <_= NEG id = 0x9B/>
174 <_= IN id = 0x9C/>
175 <_= INS id = 0x9D/>
176 <_= INSB id = 0x9E/>
177 <_= INSW id = 0x9F/>
178 <_= INSD id = 0xA0/>
179 <_= LEA id = 0xA1/>
180 <_= LODS id = 0xA2/>
181 <_= LODSB id = 0xA3/>
182 <_= LODSW id = 0xA4/>
183 <_= LODSD id = 0xA5/>
184 <_= MOV id = 0xA6/>
185 <_= MOVS id = 0xA7/>
186 <_= MOVSB id = 0xA8/>
187 <_= MOVSW id = 0xA9/>
188 <_= MOVSD id = 0xAA/>
189 <_= MOVSX id = 0xAB/>
190 <_= MOVZX id = 0xAC/>
191 <_= POP id = 0xAD/>
192 <_= POPF id = 0xAE/>
193 <_= POPFD id = 0xAF/>
194 <_= POPFW id = 0xB0/>
195 <_= "PUSHA PUSHAD" id = 0xB1/>
196 <_= "POPA POPAD" id = 0xB2/>
197 <_= PUSH id = 0xB3/>
198 <_= PUSHF id = 0xB4/>
199 <_= PUSHFD id = 0xB5/>
200 <_= PUSHFW id = 0xB6/>
201 <_= SCAS id = 0xB7/>
202 <_= SCASB id = 0xB8/>
203 <_= SCASW id = 0xB9/>
204 <_= SCASD id = 0xBA/>
205 <_= STOS id = 0xBB/>
206 <_= STOSB id = 0xBC/>
207 <_= STOSW id = 0xBD/>
208 <_= STOSD id = 0xBE/>
209 <_= XCHG id = 0xBF/>
210 <_= NOP id = 0xC0/>
211 <_= PUSHAW id = 0xC1/>
212 <_= POPAW id = 0xC2/>
213 <_= SAHF id = 0xC3/>
214 <_= LAHF id = 0xC4/>
215 <_= CLC id = 0xC5/>
216 <_= STC id = 0xC6/>
217 <_= CLI id = 0xC7/>
218 <_= STI id = 0xC8/>
219 <_= CLD id = 0xC9/>
220 <_= STD id = 0xCA/>
221 <_= RET id = 0xCB/>
222 </keywords>
223 </gasm