@@ -1,1367 +0,0 @@
1−%YAML 1.2
2−---
3−file_extensions: [yasm, nasm, asm, inc, mac]
4−scope: source.asm.x86_64
5−
6−variables:
7− num_bin: '(?:[01][01_]*)'
8− num_oct: '(?:[0-7][0-7_]*)'
9− num_dec: '(?:[0-9][0-9_]*)'
10− num_hex: '(?:[[:xdigit:]][[:xdigit:]_]*)'
11− num_bin_exp: '(?:p[+-]?{{num_dec}})'
12− num_dec_exp: '(?:e[+-]?{{num_dec}})'
13− identifier_body: '(?:[[:alnum:]_$#@~.?]*)'
14− valid_identifier: '(?:[[:alpha:]_?]{{identifier_body}})'
15−
16−contexts:
17− prototype:
18− - include: comments
19−
20− line-continuation:
21− - match: '(\\)$\n'
22− captures:
23− 1: punctuation.separator.continuation.asm.x86_64
24− - match: '\\(\s+?)$'
25− captures:
26− 1: invalid.illegal.space-after-continuation.asm.x86_64
27− line-ending:
28− - match: '$\n'
29− pop: true
30− pop:
31− - match: '(?=.|$)'
32− pop: true
33− pop-if-not-whitespace:
34− - match: '(?=\S)'
35− set: pop
36−
37− main:
38− - include: comments
39− - include: prefixes
40− - include: data-types
41− - include: registers
42− - include: mnemonics
43− - include: strings
44− - include: numbers
45− - include: operators
46− - include: support
47− - include: directives
48− - include: entities
49− - include: structs
50− - include: preprocessor
51− - include: labels
52−
53− numbers:
54− - include: floating-point
55− - include: integers
56− floating-point:
57− # binary
58− - match: '(?i)\b0[by]{{num_bin}}\.(?:{{num_bin}}?{{num_bin_exp}}?\b)?'
59− scope: constant.numeric.binary.floating-point.asm.x86_64
60− - match: '(?i)\b0[by]{{num_bin}}{{num_bin_exp}}\b'
61− scope: constant.numeric.binary.floating-point.asm.x86_64
62− # octal
63− - match: '(?i)\b0[oq]{{num_oct}}\.(?:{{num_oct}}?{{num_bin_exp}}?\b)?'
64− scope: constant.numeric.octal.floating-point.asm.x86_64
65− - match: '(?i)\b0[oq]{{num_oct}}{{num_bin_exp}}\b'
66− scope: constant.numeric.octal.floating-point.asm.x86_64
67− # decimal
68− - match: '(?i)\b(?:0[dt])?{{num_dec}}\.(?:{{num_dec}}?{{num_dec_exp}}?\b)?'
69− scope: constant.numeric.decimal.floating-point.asm.x86_64
70− - match: '(?i)\b{{num_dec}}{{num_dec_exp}}\b'
71− scope: constant.numeric.decimal.floating-point.asm.x86_64
72− #- match: '(?i)\.{{num_dec}}{{num_dec_exp}}?\b'
73− # scope: invalid.illegal.constant.numeric.decimal.floating-point.asm.x86_64
74− - match: '(?i)\b{{num_dec}}p{{num_dec}}?\b'
75− scope: constant.numeric.decimal.packed-bcd.asm.x86_64
76− # hex
77− - match: '(?i)\b0[xh]{{num_hex}}\.(?:{{num_hex}}?{{num_bin_exp}}?\b)?'
78− scope: constant.numeric.hex.floating-point.asm.x86_64
79− - match: '(?i)\b0[xh]{{num_hex}}{{num_bin_exp}}\b'
80− scope: constant.numeric.hex.floating-point.asm.x86_64
81− - match: '(?i)\$[0-9]\_?{{num_hex}}?\.(?:{{num_hex}}?{{num_bin_exp}}?\b)?'
82− scope: constant.numeric.hex.floating-point.asm.x86_64
83− - match: '(?i)\$[0-9]\_?{{num_hex}}{{num_bin_exp}}\b'
84− scope: constant.numeric.hex.floating-point.asm.x86_64
85− integers:
86− - match: '(?i)\b(?:(?:0[by]{{num_bin}})|(?:{{num_bin}}[by]))\b'
87− scope: constant.numeric.binary.asm.x86_64
88− - match: '(?i)\b(?:(?:0[oq]{{num_oct}})|(?:{{num_oct}}[oq]))\b'
89− scope: constant.numeric.octal.asm.x86_64
90− - match: '(?i)\b(?:(?:0[dt]{{num_dec}})|(?:{{num_dec}}[dt]?))\b'
91− scope: constant.numeric.decimal.asm.x86_64
92− - match: '(?i)(?:\$[0-9]\_?{{num_hex}}?)\b'
93− scope: constant.numeric.hex.asm.x86_64
94− - match: '(?i)\b(?:(?:0[xh]{{num_hex}})|(?:{{num_hex}}[hxHX]))\b'
95− scope: constant.numeric.hex.asm.x86_64
96−
97− labels:
98− # http://www.nasm.us/doc/nasmdoc3.html#section-3.9
99− - match: '(\.\.@)({{valid_identifier}})(?:(\:)?|\b)'
100− captures:
101− 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64
102− 2: entity.name.constant.special.asm.x86_64
103− 3: punctuation.separator.asm.x86_64
104− - match: '(?:(\.)?|\b)({{valid_identifier}})(?:(\:)?|\b)'
105− captures:
106− 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64
107− 2: entity.name.constant.asm.x86_64
108− 3: punctuation.separator.asm.x86_64
109− - match: '(\.)([0-9]+{{identifier_body}})(?:(\:)?|\b)'
110− captures:
111− 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64
112− 2: entity.name.constant.asm.x86_64
113− 3: punctuation.separator.asm.x86_64
114− - match: '(?:(\.)?|\b)([0-9$@~]{{identifier_body}})(?:(\:)?|\b)'
115− captures:
116− 1: punctuation.separator.asm.x86_64 storage.modifier.asm.x86_64
117− 2: invalid.illegal.entity.name.constant.asm.x86_64
118− 3: punctuation.separator.asm.x86_64
119− - match: '((%)(\d+))'
120− captures:
121− 1: invalid.illegal.meta.preprocessor.asm.x86_64
122− #1: meta.preprocessor.asm.x86_64
123− 2: punctuation.definition.variable.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
124− 3: variable.other.preprocessor.asm.x86_64
125− - match: '((%%)({{valid_identifier}})(?:(\:)?|\b))'
126− captures:
127− 1: invalid.illegal.meta.preprocessor.asm.x86_64
128− 2: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
129− 3: entity.name.constant.special.asm.x86_64
130− 4: punctuation.separator.asm.x86_64
131−
132− data-types:
133− # Initialized & uninitialized data: http://www.nasm.us/doc/nasmdoc3.html#section-3.2.1
134− - match: '(?i)\b(?:s?byte|(?:[doqtyz]|dq|s[dq]?)?word|(?:d|res)[bdoqtwyz]|ddq)\b'
135− scope: storage.type.asm.x86_64
136− - match: '(?i)\b(?:incbin|equ|times)\b'
137− scope: support.function.asm.x86_64
138−
139− prefixes:
140− - match: '(?i)\b(?:strict|nosplit|near|far|abs|rel)\b'
141− scope: storage.modifier.asm.x86_64
142− - match: '(?i)\b(?:[ao](?:16|32|64))\b'
143− scope: storage.modifier.prefix.asm.x86_64
144− - match: '(?i)\b(?:rep(?:n?[ez])?|lock|xacquire|xrelease|(?:no)?bnd)\b'
145− scope: storage.modifier.prefix.asm.x86_64
146− - match: '{(vex[23]|evex)}'
147− captures:
148− 1: storage.modifier.prefix.vex.asm.x86_64
149− - match: '{(k[1-7])}'
150− captures:
151− 1: storage.modifier.opmask.asm.x86_64
152− - match: '{(1to(?:8|16))}'
153− captures:
154− 1: storage.modifier.precision.asm.x86_64
155− - match: '{(z|(?:r[nudz]-)?sae)}'
156− captures:
157− 1: storage.modifier.rounding.asm.x86_64
158−
159− support:
160− # http://www.nasm.us/doc/nasmdoc7.html#section-7.4.6
161− - match: '\.\.(?:start|imagebase|tlvp|got(?:pc(?:rel)?|(?:tp)?off)?|plt|sym|tlsie)\b'
162− scope: support.constant.asm.x86_64
163− - match: '\b__(?:utf(?:(?:16|32)(?:[lb]e)?)|float(?:8|16|32|64|80[me]|128[lh])|Infinity|[QS]?NaN)__\b'
164− scope: support.function.asm.x86_64
165− # http://www.nasm.us/doc/nasmdoc4.html#section-4.11
166− - match: '\b__NASM_(?:MAJOR|(?:SUB)?MINOR|SNAPSHOT|VER(?:SION_ID)?)__\b'
167− scope: support.function.asm.x86_64
168− - match: '\b___NASM_PATCHLEVEL__\b'
169− scope: support.function.asm.x86_64
170− - match: '\b__(?:FILE|LINE|BITS|OUTPUT_FORMAT)__\b'
171− scope: support.function.asm.x86_64
172− - match: '\b__(?:(?:UTC_)?(?:DATE|TIME)(?:_NUM)?|POSIX_TIME)__\b'
173− scope: support.function.asm.x86_64
174− - match: '\b__USE_(?:ALTREG|SMARTALIGN|FP|IFUNC)__\b'
175− scope: support.function.asm.x86_64
176− - match: '\b__PASS__\b'
177− scope: invalid.deprecated.support.constant.altreg.asm.x86_64
178− - match: '(?i)\balignmode\b'
179− scope: support.function.smartalign.asm.x86_64
180− push:
181− - include: line-continuation
182− - include: line-ending
183− - match: '\b(?:generic|nop|k7|k8|p6)\b'
184− scope: support.constant.smartalign.asm.x86_64
185− pop: true
186− - match: '\w+'
187− scope: invalid.illegal.constant.smartalign.asm.x86_64
188− pop: true
189− - match: '\b__ALIGNMODE__\b'
190− scope: support.constant.smartalign.asm.x86_64
191− - match: '\b(?:Inf|[QS]?NaN)\b'
192− scope: support.constant.fp.asm.x86_64
193− - match: '\b(?:float(?:8|16|32|64|80[me]|128[lh]))\b'
194− scope: support.function.fp.asm.x86_64
195− - match: '(?i)\bilog2(?:[ewfc]|[fc]w)?\b'
196− scope: support.function.ifunc.asm.x86_64
197−
198− directives:
199− - match: '(?i)\b(?:ideal|jumps|p[345]86|end)\b'
200− scope: invalid.deprecated.tasm.asm.x86_64
201− - match: '(?i)\b(?:bits|use(?:16|32|64)|org|uppercase|safeseh|osabi)\b'
202− scope: support.function.directive.asm.x86_64
203− - match: '(?i)\b(default)(?:\s+(rel|abs|(?:no)?bnd))?\b'
204− captures:
205− 1: support.function.directive.asm.x86_64
206− 2: support.constant.directive.asm.x86_64
207− - match: '(?i)\b(?:section|segment)\b'
208− scope: support.function.directive.asm.x86_64
209− push: [section-parameters, section-name]
210− - match: '(?i)\bgroup\b'
211− scope: support.function.directive.asm.x86_64
212− push: section-name
213− - match: '\b(?:__SECT__|__NASMDEFSEG|_?_GLOBAL_OFFSET_TABLE_)\b'
214− scope: support.constant.directive.asm.x86_64
215− - match: '(?i)\b(?:absolute|common)\b'
216− scope: support.function.directive.asm.x86_64
217− - match: '(?i)\b(?:subsections_via_symbols|no_dead_strip)\b'
218− scope: support.function.directive.macho.asm.x86_64
219− - match: '(?i)import\b'
220− scope: support.function.directive.asm.x86_64
221− push:
222− - match: '{{valid_identifier}}'
223− scope: entity.name.function.asm.x86_64
224− set:
225− - match: '{{valid_identifier}}'
226− scope: meta.path.asm.x86_64 string.unquoted.asm.x86_64
227− set:
228− - match: '{{valid_identifier}}'
229− scope: variable.function.asm.x86_64
230− set:
231− - include: comments
232− - match: '{{valid_identifier}}'
233− scope: invalid.illegal.asm.x86_64
234− - include: line-continuation
235− - include: pop-if-not-whitespace
236− - include: line-ending
237− - include: line-continuation
238− - include: pop-if-not-whitespace
239− - include: line-ending
240− - include: line-continuation
241− - include: pop-if-not-whitespace
242− - include: line-ending
243− - include: line-continuation
244− - include: pop-if-not-whitespace
245− - include: line-ending
246− - match: '(?i)export\b'
247− scope: support.function.directive.asm.x86_64
248− push:
249− - match: '{{valid_identifier}}'
250− scope: entity.name.constant.asm.x86_64
251− set:
252− - match: '{{valid_identifier}}'
253− scope: variable.function.asm.x86_64
254− set: export-parameters
255− - include: line-continuation
256− - include: pop-if-not-whitespace
257− - include: line-ending
258− - include: line-continuation
259− - include: pop-if-not-whitespace
260− - include: line-ending
261− - match: '(?i)global\b'
262− scope: support.function.directive.asm.x86_64
263− push:
264− - match: '(?<=\:)(?:function|data|export)\b'
265− scope: storage.type.directive.asm.x86_64
266− - match: '\b(?:default|internal|hidden|protected|proc|data)\b'
267− scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64
268− - include: line-continuation
269− - include: line-ending
270− - include: preprocessor-macro-parameter
271− - include: main
272− - match: '(?i)extern\b'
273− scope: support.function.directive.asm.x86_64
274− push:
275− - match: '(?<=\:)(?:import)\b'
276− scope: storage.type.directive.asm.x86_64
277− - match: '\b(?:proc|data)\b'
278− scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64
279− - include: line-continuation
280− - include: line-ending
281− - include: preprocessor-macro-parameter
282− - include: main
283− - match: '(?i)library\b'
284− scope: support.function.directive.asm.x86_64
285− push:
286− - match: '{{valid_identifier}}'
287− scope: meta.path.asm.x86_64 string.unquoted.asm.x86_64
288− pop: true
289− - include: line-continuation
290− - include: line-ending
291− - include: pop-if-not-whitespace
292− - match: '(?i)module\b'
293− scope: support.function.directive.asm.x86_64
294− push:
295− - match: '\$?{{valid_identifier}}'
296− scope: entity.name.namespace.asm.x86_64
297− pop: true
298− - include: line-continuation
299− - include: line-ending
300− - include: pop-if-not-whitespace
301− - match: '(?i)\bcpu\b'
302− scope: support.function.directive.asm.x86_64
303− push:
304− - match: '(?i)\b(?:(?:80|[1-6])86|pentium|ppro|p[234]|katmai|willamette|prescott|(?:x|ia)64)\b'
305− scope: support.constant.directive.asm.x86_64
306− pop: true
307− - include: line-continuation
308− - include: pop-if-not-whitespace
309− - include: line-ending
310− - include: main
311− - match: '(?i)\bfloat\b'
312− scope: support.function.directive.asm.x86_64
313− push:
314− - match: '(?i)\b(?:(?:no)?daz|near|up|down|zero|default)\b'
315− scope: support.constant.directive.asm.x86_64
316− pop: true
317− - include: line-continuation
318− - include: pop-if-not-whitespace
319− - include: line-ending
320− - include: main
321− - match: '(?i)(\[)\s*(warning)\b'
322− captures:
323− 2: support.function.directive.asm.x86_64
324− push:
325− - match: '(?i)([+\-*])|(error)\s*(=)\s*'
326− captures:
327− 1: keyword.control.warning.asm.x86_64
328− 2: support.constant.directive.warning.asm.x86_64
329− 3: keyword.operator.assignment.asm.x86_64
330− push:
331− - match: '(?i)\b(other|macro-(?:params|selfref|defaults)|orphan-labels|number-overflow|gnu-elf-extensions|float-(?:overflow|denorm|underflow|toolong)|user|lock|hle|bnd|zext-reloc|ptr|(?:bad|unknown|not-my)-pragma|unknown-warning|all)(?=\]|\s)'
332− scope: support.constant.directive.warning.asm.x86_64
333− pop: true
334− - match: '\S+(?=\])'
335− scope: invalid.illegal.support.constant.directive.warning.asm.x86_64
336− pop: true
337− - match: '\S+'
338− scope: invalid.illegal.support.constant.directive.warning.asm.x86_64
339− pop: true
340− - match: '(?i)\b(?:all|error)\b'
341− scope: support.constant.directive.warning.asm.x86_64
342− - match: ']'
343− pop: true
344− - include: line-continuation
345− - include: line-ending
346− - match: '(?i)(\[)\s*(map)\b'
347− captures:
348− 2: support.function.directive.asm.x86_64
349− push:
350− - match: '(?i)\b(?:all|brief|sections|segments|symbols)\b'
351− scope: support.constant.directive.map.asm.x86_64
352− - match: '(?i)\b(?:std(?:out|err))\b'
353− scope: meta.path.asm.x86_64 support.constant.directive.map.asm.x86_64
354− - match: '{{valid_identifier}}'
355− scope: meta.path.asm.x86_64 string.unquoted.asm.x86_64
356− - match: ']'
357− pop: true
358− - include: line-continuation
359− - include: line-ending
360− section-parameters:
361− - match: '='
362− scope: keyword.operator.assignment.asm.x86_64
363− - match: '(?i)\b(?:(?:v)?start|align|absolute)\b'
364− scope: variable.parameter.directive.asm.x86_64
365− - match: '(?i)\b(?:(?:prog|no)bits|private|public|common|stack|code|text|data|bss|rdata|info)\b'
366− scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64
367− - match: '(?i)\b(?:mixed|zerofill|no_dead_strip|live_support|strip_static_syms)\b'
368− scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.macho.asm.x86_64
369− - match: '(?i)\b(?:(?:no)?(?:alloc|exec|write)|tls)\b'
370− scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.elf.asm.x86_64
371− - match: '(?i)\b(?:(?:v)?follows)\b'
372− scope: variable.parameter.directive.asm.x86_64
373− push:
374− - match: '='
375− scope: keyword.operator.assignment.asm.x86_64
376− set: [pop, section-name]
377− - include: line-continuation
378− - include: line-ending
379− - match: '(?i)\b(?:class|overlay)\b'
380− scope: variable.parameter.directive.asm.x86_64
381− push:
382− - match: '='
383− scope: keyword.operator.assignment.asm.x86_64
384− - match: '{{valid_identifier}}'
385− scope: entity.name.class.asm.x86_64 string.unquoted.asm.x86_64
386− pop: true
387− - include: line-continuation
388− - include: line-ending
389− - include: line-continuation
390− - include: line-ending
391− - include: main
392− section-name:
393− - match: '(?:\.|\b)(?:text|bss|(?:[rpx]|ro)?data|code)\b'
394− scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64 support.constant.section.asm.x86_64
395− pop: true
396− - match: '\b__(?:text|const|data|bss|TEXT|CONST|DATA|BSS)\b'
397− scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64 support.constant.section.macho.asm.x86_64
398− pop: true
399− - match: '(?:\.)(?:[lt](?:data|bss)|lrodata|comment)\b'
400− scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64 support.constant.section.elf.asm.x86_64
401− pop: true
402− - match: '(?:\.|\b){{valid_identifier}}\b'
403− scope: entity.name.section.asm.x86_64 string.unquoted.asm.x86_64
404− pop: true
405− - match: '(?=`|''|")'
406− set:
407− - meta_scope: entity.name.section.asm.x86_64
408− - include: strings
409− - include: pop
410− - include: line-continuation
411− - include: pop-if-not-whitespace
412− - include: line-ending
413− export-parameters:
414− - match: '='
415− scope: keyword.operator.assignment.asm.x86_64
416− - match: '(?i)\b(?:resident|nodata)\b'
417− scope: storage.modifier.directive.asm.x86_64 variable.parameter.directive.asm.x86_64
418− - match: '(?i)\b(?:parm)\b'
419− scope: variable.parameter.directive.asm.x86_64
420− - include: primitive-directive-end
421− - include: line-continuation
422− - include: line-ending
423− - include: main
424−
425− operators:
426− - match: '[+\-*/]'
427− scope: keyword.operator.arithmetic.asm.x86_64
428− - match: '(%%|%)[[:space:]]'
429− captures:
430− 1: keyword.operator.arithmetic.asm.x86_64
431− - match: '[|&^~!]|<<|>>'
432− scope: keyword.operator.bitwise.asm.x86_64
433− - match: '(?i)\b(seg|wrt)\b'
434− scope: keyword.operator.word.asm.x86_64
435− - match: ','
436− scope: operator.separator.asm.x86_64
437−
438− structs:
439− - match: '(?i)\bstruc\b'
440− scope: support.function.asm.x86_64 meta.struct.asm.x86_64
441− push:
442− - meta_content_scope: meta.struct.asm.x86_64.1
443− - match: '{{valid_identifier}}'
444− scope: entity.name.struct.asm.x86_64
445− set:
446− - meta_scope: meta.struct.asm.x86_64
447− - match: '(?i)\bendstruc\b'
448− scope: support.function.asm.x86_64 meta.struct.asm.x86_64
449− pop: true
450− - include: main
451− - match: '\w'
452− scope: invalid.illegal.entity.name.struct.asm.x86_64
453− - match: '(?i)\bendstruc\b'
454− scope: invalid.illegal.support.function.asm.x86_64 meta.struct.asm.x86_64
455− - match: '(?i)\bistruc\b'
456− scope: support.function.asm.x86_64 meta.struct.asm.x86_64
457− push:
458− - meta_content_scope: meta.struct.asm.x86_64.1
459− - match: '{{valid_identifier}}'
460− scope: variable.other.asm.x86_64
461− set:
462− - meta_scope: meta.struct.asm.x86_64
463− - match: '(?i)\bat\b'
464− scope: support.function.asm.x86_64 meta.struct.asm.x86_64
465− - match: '(?i)\biend\b'
466− scope: support.function.asm.x86_64 meta.struct.asm.x86_64
467− pop: true
468− - include: main
469− - match: '\w'
470− scope: invalid.illegal.variable.struct.asm.x86_64
471− - match: '(?i)\biend\b'
472− scope: invalid.illegal.support.function.asm.x86_64 meta.struct.asm.x86_64
473− - match: '(?i)\balignb?\b'
474− scope: support.function.asm.x86_64
475− - match: '(?i)\b(sectalign)\s+(on|off)?'
476− captures:
477− 1: support.function.asm.x86_64
478− 2: support.constant.asm.x86_64
479−
480− entities:
481− - match: '\$@feat\.00\b'
482− scope: variable.language.sseh.asm.x86_64
483− - match: '(\$)(?:\w+)\b'
484− scope: variable.other.asm.x86_64
485− captures:
486− 1: punctuation.definition.variable.asm.x86_64
487− - match: '\${3,}'
488− scope: invalid.illegal.variable.language.asm.x86_64
489− - match: '\$'
490− scope: variable.language.asm.x86_64
491−
492− comments:
493− - match: (?:(;)|(?:^|\s)(#)\s).*$
494− scope: comment.line.asm.x86_64
495− captures:
496− 1: punctuation.definition.comment.asm.x86_64
497− 2: punctuation.definition.comment.asm.x86_64
498− - match: /\*
499− scope: punctuation.definition.comment.asm.x86_64
500− push:
501− - meta_scope: comment.block.asm.x86_64
502− - match: \*/
503− scope: punctuation.definition.comment.asm.x86_64
504− pop: true
505−
506− preprocessor: # http://www.nasm.us/doc/nasmdoc4.html
507− - include: preprocessor-macro-multiline
508− - include: preprocessor-macro-define
509− - include: preprocessor-macro-indirection
510− - include: preprocessor-conditions
511− - include: preprocessor-other
512− # single-line macro
513− preprocessor-macro-define:
514− - match: '^\s*((%)x?i?define)\b'
515− captures:
516− 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64
517− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
518− push:
519− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
520− - include: preprocessor-comments
521− - match: '(?:{{valid_identifier}})(?=\()'
522− scope: entity.name.function.preprocessor.asm.x86_64
523− set:
524− - match: '\('
525− scope: punctuation.section.group.begin.asm.x86_64
526− set: preprocessor-macro-params
527− - match: '{{valid_identifier}}'
528− scope: entity.name.constant.preprocessor.asm.x86_64
529− set: preprocessor-macro-definition
530− - include: line-continuation
531− - include: pop-if-not-whitespace
532− - include: line-ending
533− - match: '^\s*((%)(?:include|depend))\b'
534− captures:
535− 1: meta.preprocessor.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64
536− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
537− push: preprocessor-macro-definition
538− - match: '^\s*((%)use)\b'
539− captures:
540− 1: meta.preprocessor.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64
541− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
542− push:
543− - meta_content_scope: meta.preprocessor.macro.asm.x86_64 string.unquoted.asm.x86_64
544− - include: strings
545− - include: line-ending
546− - include: preprocessor-macro-indirection
547− - match: '^\s*((%)(?:assign|i?deftok|strcat|strlen|substr|pathsearch|push|pop|repl|line|clear))\b'
548− captures:
549− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
550− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
551− push:
552− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
553− - include: preprocessor-macro-indirection
554− - include: preprocessor-conditions-constant
555− - match: '^\s*((%)(?:arg|local))\b'
556− captures:
557− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
558− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
559− push:
560− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
561− - match: '({{valid_identifier}})(\:)(?=\w+)'
562− captures:
563− 1: meta.preprocessor.asm.x86_64 variable.parameter.macro.asm.x86_64
564− 2: punctuation.separator.asm.x86_64
565− - match: '\,'
566− scope: punctuation.separator.asm.x86_64
567− - include: data-types
568− - match: '\w+\b'
569− scope: invalid.illegal.storage.type.asm.x86_64
570− - include: line-continuation
571− - include: line-ending
572− - match: '^\s*((%)stacksize)\b'
573− captures:
574− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
575− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
576− push:
577− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
578− - match: '\b(flat(?:64)?|large|small)\b'
579− scope: support.constant.macro.asm.x86_64
580− - match: '\w+\b'
581− scope: invalid.illegal.storage.type.asm.x86_64
582− - include: line-continuation
583− - include: line-ending
584− - match: '^\s*((%)i?defstr)\s+(?:({{valid_identifier}})|(%%)({{valid_identifier}}))\b'
585− captures:
586− 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.preprocessor.assign.asm.x86_64
587− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
588− 3: entity.name.constant.preprocessor.asm.x86_64
589− 4: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
590− 5: entity.name.constant.special.asm.x86_64
591− push:
592− - meta_content_scope: meta.preprocessor.macro.asm.x86_64 string.unquoted.asm.x86_64
593− - include: preprocessor-macro-indirection
594− - include: line-ending
595− - match: '^\s*((%)(?:warning|error|fatal|pragma))(?=\s|$)'
596− captures:
597− 1: meta.preprocessor.macro.asm.x86_64 keyword.control.preprocessor.assign.asm.x86_64
598− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
599− 3: entity.name.constant.preprocessor.asm.x86_64
600− push:
601− - meta_content_scope: meta.preprocessor.macro.asm.x86_64 string.unquoted.asm.x86_64
602− - include: strings
603− - include: preprocessor-macro-indirection
604− - include: line-ending
605− preprocessor-macro-params-illegal:
606− - meta_scope: invalid.illegal.asm.x86_64
607− - include: preprocessor-macro-params
608− preprocessor-macro-params:
609− - meta_scope: meta.preprocessor.macro.parameters.asm.x86_64 meta.group.asm.x86_64
610− - match: '{{valid_identifier}}'
611− scope: variable.parameter.asm.x86_64
612− - match: '\)'
613− scope: punctuation.section.group.end.asm.x86_64
614− set: preprocessor-macro-definition
615− - match: ','
616− scope: punctuation.separator.asm.x86_64
617− push:
618− - match: '{{valid_identifier}}'
619− scope: variable.parameter.asm.x86_64
620− pop: true
621− - include: line-continuation
622− - include: preprocessor-comments
623− - match: '\.\.\.'
624− scope: keyword.operator.variadic.asm.x86_64
625− - match: '(?=\))'
626− pop: true
627− - match: '(/\*).*(\*/)'
628− scope: comment.block.asm.x86_64
629− captures:
630− 1: punctuation.definition.comment.asm.x86_64
631− 2: punctuation.definition.comment.asm.x86_64
632− - match: '\S+'
633− scope: invalid.illegal.unexpected-character.asm.x86_64
634− - include: line-continuation
635− - include: preprocessor-comments
636− - match: '\.\.\.'
637− scope: keyword.operator.variadic.asm.x86_64
638− - match: '(/\*).*(\*/)'
639− scope: comment.block.asm.x86_64
640− captures:
641− 1: punctuation.definition.comment.asm.x86_64
642− 2: punctuation.definition.comment.asm.x86_64
643− - match: '$\n'
644− scope: invalid.illegal.unexpected-end-of-line.asm.x86_64
645− preprocessor-macro-definition:
646− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
647− - include: preprocessor-comments
648− - include: line-continuation
649− - include: line-ending
650− - include: main
651− preprocessor-macro-indirection:
652− - match: '((%)(\[))'
653− captures:
654− 1: meta.preprocessor.macro.asm.x86_64 keyword.control.preprocessor.asm.x86_64
655− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
656− 3: meta.brackets.asm.x86_64 punctuation.section.brackets.begin.asm.x86_64
657− push:
658− - meta_scope: meta.brackets.asm.x86_64 meta.preprocessor.macro.asm.x86_64
659− - include: line-continuation
660− - include: line-ending
661− - include: main
662− - match: '\]'
663− scope: punctuation.section.brackets.end.asm.x86_64 keyword.control.preprocessor.asm.x86_64
664− pop: true
665− - match: '((%)\+)\s+'
666− captures:
667− 1: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64
668− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
669− - match: '((%)(\?\??))'
670− captures:
671− 1: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64
672− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
673− 3: variable.language.preprocessor.asm.x86_64
674− - match: '((%\$+)({{valid_identifier}})(?:(\:)?|\b))'
675− captures:
676− 1: meta.preprocessor.asm.x86_64
677− 2: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
678− 3: entity.name.constant.special.asm.x86_64
679− 4: punctuation.separator.asm.x86_64
680− - match: '((%)(\!))'
681− captures:
682− 1: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64
683− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
684− 3: punctuation.definition.variable.asm.x86_64
685− push:
686− - meta_content_scope: meta.preprocessor.asm.x86_64 keyword.operator.preprocessor.asm.x86_64 variable.parameter.preprocessor.environment.asm.x86_64
687− - match: '{{valid_identifier}}'
688− scope: variable.parameter.preprocessor.environment.unquoted.asm.x86_64
689− pop: true
690− - match: '(?=`|''|")'
691− set:
692− - meta_scope: variable.parameter.preprocessor.environment.quoted.asm.x86_64
693− - include: strings
694− - include: pop
695− - include: pop
696− preprocessor-conditions: # also see preprocessor-macro-conditions-multiline
697− - match: '^\s*((%)ifn?(?:idni?|id|num|str|token|empty|env)?)\b'
698− captures:
699− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
700− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
701− push: preprocessor-conditions-content-block
702− - match: '^\s*((%)ifn?(?:def|ctx))\b'
703− captures:
704− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
705− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
706− push: [preprocessor-conditions-content-block, preprocessor-conditions-constant]
707− - match: '^\s*((%)rep)\b'
708− captures:
709− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
710− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
711− push: preprocessor-conditions-content-block
712− - match: '^\s*((%)ifn?macro)\b'
713− captures:
714− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
715− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
716− push: [preprocessor-conditions-content-block, preprocessor-macro-arguments-signature]
717− - include: preprocessor-conditions-parity
718− preprocessor-conditions-constant:
719− - meta_content_scope: meta.preprocessor.asm.x86_64
720− - match: '(?:{{valid_identifier}})(?=\()'
721− scope: entity.name.constant.preprocessor.asm.x86_64
722− set:
723− - match: '\('
724− scope: punctuation.section.group.begin.asm.x86_64
725− set: preprocessor-macro-params-illegal
726− - match: '{{valid_identifier}}\b'
727− scope: meta.preprocessor.asm.x86_64 entity.name.constant.preprocessor.asm.x86_64
728− pop: true
729− - include: line-continuation
730− - include: pop-if-not-whitespace
731− - include: line-ending
732− - include: main
733− preprocessor-conditions-content-block:
734− - meta_content_scope: meta.block.preprocessor.asm.x86_64
735− - include: preprocessor-conditions-content-block-common
736− - include: main
737− preprocessor-conditions-content-block-common:
738− - match: '^\s*((%)(?:elifn?(?:idni?|id|num|str|token|empty|env)?|else|exitrep))\b'
739− captures:
740− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
741− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
742− - match: '^\s*((%)(?:elifn?(?:def|ctx)))\b'
743− captures:
744− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
745− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
746− push: preprocessor-conditions-constant
747− - match: '^\s*((%)elifn?macro)\b'
748− captures:
749− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
750− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
751− push: preprocessor-macro-arguments-signature
752− - match: '^\s*((%)(?:end(?:if|rep)))\b'
753− captures:
754− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
755− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
756− pop: true
757− preprocessor-conditions-parity:
758− - match: '^\s*((%)(?:elifn?(?:macro|def|ctx|idni?|id|num|str|token|empty|env)?|else|(?:end(?:if|rep))|exitrep))\b'
759− captures:
760− 1: invalid.illegal.meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
761− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
762− preprocessor-other:
763− - include: preprocessor-macro-indirection
764− - match: '^\s*((%)undef)\b'
765− captures:
766− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
767− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
768− push:
769− - meta_scope: meta.preprocessor.asm.x86_64
770− - include: line-continuation
771− - include: line-ending
772− - include: preprocessor-comments
773− - match: '{{valid_identifier}}'
774− scope: entity.name.constant.preprocessor.asm.x86_64
775− pop: true
776− - match: '^\s*((%)unmacro)\b'
777− captures:
778− 1: meta.preprocessor.asm.x86_64 keyword.control.import.asm.x86_64
779− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
780− push: preprocessor-macro-arguments-signature
781− preprocessor-macro-arguments-signature:
782− - meta_scope: meta.preprocessor.asm.x86_64
783− - include: preprocessor-comments
784− - match: '({{valid_identifier}})(?:\s+(?:(\d+(?:(-)(?:\d+|\*))?)(\+)?(\.nolist\b)?))'
785− captures:
786− 1: entity.name.function.preprocessor.asm.x86_64
787− 2: variable.parameter.preprocessor.asm.x86_64
788− 3: keyword.operator.preprocessor.range.asm.x86_64
789− 4: storage.modifier.preprocessor.greedy.asm.x86_64
790− 5: storage.modifier.preprocessor.listing.asm.x86_64
791− pop: true
792− - include: line-continuation
793− - include: pop-if-not-whitespace
794− - include: line-ending
795− # multi-line macro
796− preprocessor-macro-multiline:
797− - match: '^\s*((%)i?macro)\b'
798− captures:
799− 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.define.asm.x86_64
800− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
801− push:
802− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
803− - include: preprocessor-comments
804− - match: '(?:{{valid_identifier}})(?=\()'
805− scope: entity.name.constant.preprocessor.asm.x86_64
806− set:
807− - meta_content_scope: invalid.illegal.asm.x86_64
808− - match: '\('
809− scope: punctuation.section.group.begin.asm.x86_64
810− set: preprocessor-macro-params-illegal
811− - match: '({{valid_identifier}})(?:\s+(?:(\d+(?:(-)(?:\d+|\*))?)(\+)?(\.nolist\b)?))'
812− captures:
813− 1: entity.name.function.preprocessor.asm.x86_64
814− 2: variable.parameter.preprocessor.asm.x86_64
815− 3: keyword.operator.preprocessor.range.asm.x86_64
816− 4: storage.modifier.preprocessor.greedy.asm.x86_64
817− 5: storage.modifier.preprocessor.listing.asm.x86_64
818− set: preprocessor-macro-definition-multiline-with-parameters
819− - match: '^\s*((%)endmacro)\b'
820− captures:
821− 1: invalid.illegal.meta.preprocessor.asm.x86_64 keyword.control.import.asm.x86_64
822− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
823− preprocessor-macro-parameter:
824− - match: '((%)(\-?\d+))'
825− captures:
826− 1: meta.preprocessor.asm.x86_64
827− 2: punctuation.definition.variable.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
828− 3: variable.other.preprocessor.asm.x86_64
829− preprocessor-macro-definition-multiline-with-parameters:
830− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
831− - include: preprocessor-comments
832− - include: preprocessor-macro-parameter
833− - include: preprocessor-macro-indirection
834− - include: preprocessor-macro-conditions-multiline
835− - include: preprocessor-macro-definition-multiline
836− preprocessor-macro-definition-multiline:
837− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
838− - include: preprocessor-comments
839− - match: '^\s*((%)endmacro)\b'
840− captures:
841− 1: meta.preprocessor.asm.x86_64 keyword.control.import.asm.x86_64
842− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
843− pop: true
844− - match: '((%%)({{valid_identifier}})(?:(\:)?|\b))'
845− captures:
846− 1: meta.preprocessor.asm.x86_64
847− 2: punctuation.definition.keyword.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
848− 3: entity.name.constant.special.asm.x86_64
849− 4: punctuation.separator.asm.x86_64
850− - match: '((%)({))'
851− captures:
852− 1: meta.preprocessor.macro.asm.x86_64 keyword.control.preprocessor.asm.x86_64
853− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
854− 3: meta.braces.asm.x86_64 punctuation.section.braces.begin.asm.x86_64
855− push:
856− - meta_scope: meta.braces.asm.x86_64 meta.preprocessor.macro.asm.x86_64
857− - include: preprocessor-macro-indirection
858− - match: ':'
859− scope: punctuation.separator.asm.x86_64
860− - match: '}'
861− scope: punctuation.section.braces.end.asm.x86_64 keyword.control.preprocessor.asm.x86_64
862− pop: true
863− - match: '^\s*((%)(?:rotate))\b'
864− captures:
865− 1: meta.preprocessor.asm.x86_64 keyword.operator.word.asm.x86_64
866− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
867− - match: '^\s*((%)(?:include|depend))\b'
868− captures:
869− 1: meta.preprocessor.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64
870− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
871− set: preprocessor-macro-definition-multiline-with-parameters
872− - match: '^\s*((%)(?:pathsearch))\b'
873− captures:
874− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
875− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
876− set: [preprocessor-macro-definition-multiline-with-parameters, preprocessor-conditions-constant]
877− - match: '^\s*((%)x?i?define)\b'
878− captures:
879− 1: meta.preprocessor.macro.asm.x86_64 keyword.control.import.preprocessor.asm.x86_64
880− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
881− push:
882− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
883− - include: preprocessor-comments
884− - match: '(?:{{valid_identifier}})(?=\()'
885− scope: entity.name.function.preprocessor.asm.x86_64
886− set:
887− - match: '\('
888− scope: punctuation.section.group.begin.asm.x86_64
889− set: preprocessor-macro-params
890− - match: '{{valid_identifier}}'
891− scope: entity.name.constant.preprocessor.asm.x86_64
892− set: preprocessor-macro-definition-inside-multiline
893− - include: line-continuation
894− - include: pop-if-not-whitespace
895− - include: line-ending
896−
897− - include: preprocessor-macro-indirection
898− - include: preprocessor-conditions
899− - include: main
900− preprocessor-macro-conditions-multiline: # also see preprocessor-conditions
901− - match: '^\s*((%)ifn?(?:idni?|id|num|str|token|empty|env)?)\b'
902− captures:
903− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
904− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
905− push: preprocessor-conditions-content-block-multiline
906− - match: '^\s*((%)ifn?(?:def|ctx))\b'
907− captures:
908− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
909− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
910− push: [preprocessor-conditions-content-block-multiline, preprocessor-conditions-constant]
911− - match: '^\s*((%)rep)\b'
912− captures:
913− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
914− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
915− push: preprocessor-conditions-content-block-multiline
916− - match: '^\s*((%)ifn?macro)\b'
917− captures:
918− 1: meta.preprocessor.asm.x86_64 keyword.control.preprocessor.asm.x86_64
919− 2: punctuation.definition.keyword.preprocessor.asm.x86_64
920− push: [preprocessor-macro-arguments-signature, preprocessor-conditions-content-block-multiline]
921− - include: preprocessor-conditions-parity
922− preprocessor-conditions-content-block-multiline:
923− - meta_content_scope: meta.block.preprocessor.asm.x86_64
924− - include: preprocessor-conditions-content-block-common
925− - include: preprocessor-macro-definition-multiline-with-parameters
926− preprocessor-macro-definition-inside-multiline:
927− - meta_content_scope: meta.preprocessor.macro.asm.x86_64
928− - include: preprocessor-macro-parameter
929− - include: preprocessor-macro-definition
930−
931− strings: # Character strings: http://www.nasm.us/doc/nasmdoc3.html#section-3.4.2
932− - match: '`'
933− scope: punctuation.definition.string.begin.asm.x86_64
934− push: string-backquote
935− - match: ''''
936− scope: punctuation.definition.string.begin.asm.x86_64
937− push: string-single
938− - match: '"'
939− scope: punctuation.definition.string.begin.asm.x86_64
940− push: string-double
941− string-content:
942− - match: '\\u[[:xdigit:]]{4}'
943− scope: constant.character.escape.asm.x86_64
944− - match: '\\U[[:xdigit:]]{8}'
945− scope: constant.character.escape.asm.x86_64
946− - match: '\\x[[:xdigit:]]{1,2}'
947− scope: constant.character.escape.asm.x86_64
948− - match: '\\[0-7]{1,3}'
949− scope: constant.character.escape.asm.x86_64
950− - match: '\\[''"`\\?abtnvfre]'
951− scope: constant.character.escape.asm.x86_64
952− - match: '\\.'
953− scope: invalid.illegal.constant.character.escape.asm.x86_64
954− string-backquote:
955− - meta_scope: string.quoted.other.asm.x86_64
956− - meta_include_prototype: false
957− - include: string-content
958− - match: '`'
959− scope: punctuation.definition.string.end
960− pop: true
961− string-single:
962− - meta_scope: string.quoted.single.asm.x86_64
963− - meta_include_prototype: false
964− - match: ''''
965− scope: punctuation.definition.string.end
966− pop: true
967− string-double:
968− - meta_scope: string.quoted.double.asm.x86_64
969− - meta_include_prototype: false
970− - match: '"'
971− scope: punctuation.definition.string.end
972− pop: true
973−
974− registers:
975− - match: '(?i)\b(?:[abcd][hl]|[er]?[abcd]x|[er]?(?:di|si|bp|sp)|dil|sil|bpl|spl|r(?:8|9|1[0-5])[bdlw]?)\b'
976− scope: constant.language.register.general-purpose.asm.x86_64
977− - match: '(?i)\b(?:[cdefgs]s)\b'
978− scope: constant.language.register.segment.asm.x86_64
979− - match: '(?i)\b(?:[er]?flags)\b'
980− scope: constant.language.register.flags.asm.x86_64
981− - match: '(?i)\b(?:[er]?ip)\b'
982− scope: constant.language.register.instruction-pointer.asm.x86_64
983− - match: '(?i)\b(?:cr[02-4])\b'
984− scope: constant.language.register.control.asm.x86_64
985− - match: '(?i)\b(?:(?:mm|st|fpr)[0-7])\b'
986− scope: constant.language.register.mmx.asm.x86_64
987− - match: '(?i)\b(?:[xy]mm(?:[0-9]|1[0-5])|mxcsr)\b'
988− scope: constant.language.register.sse_avx.asm.x86_64
989− - match: '(?i)\b(?:zmm(?:[12]?[0-9]|30|31))\b'
990− scope: constant.language.register.avx512.asm.x86_64
991− - match: '(?i)\b(?:bnd(?:[0-3]|cfg[su]|status))\b'
992− scope: constant.language.register.memory-protection.asm.x86_64
993− - match: '(?i)\b(?:(?:[gil]dt)r?|tr)\b'
994− scope: constant.language.register.system-table-pointer.asm.x86_64
995− - match: '(?i)\b(?:dr[0-367])\b'
996− scope: constant.language.register.debug.asm.x86_64
997− - match: '(?i)\b(?:cr8|dr(?:[89]|1[0-5])|efer|tpr|syscfg)\b'
998− scope: constant.language.register.amd.asm.x86_64
999− - match: '(?i)\b(?:db[0-367]|t[67]|tr[3-7]|st)\b'
1000− scope: invalid.deprecated.constant.language.register.asm.x86_64
1001− - match: '(?i)\b[xy]mm(?:1[6-9]|2[0-9]|3[01])\b'
1002− scope: invalid.deprecated.constant.language.register.asm.x86_64
1003−
1004− mnemonics: # see valid.asm for references
1005− - include: mnemonics-general-purpose
1006− - include: mnemonics-fpu
1007− - include: mnemonics-mmx
1008− - include: mnemonics-sse
1009− - include: mnemonics-sse2
1010− - include: mnemonics-sse3
1011− - include: mnemonics-sse4
1012− - include: mnemonics-aesni
1013− - include: mnemonics-avx
1014− - include: mnemonics-avx2
1015− - include: mnemonics-tsx
1016− - include: mnemonics-system
1017− - include: mnemonics-64bit
1018− - include: mnemonics-vmx
1019− - include: mnemonics-smx
1020− - include: mnemonics-intel-isa-sgx
1021− - include: mnemonics-intel-isa-mpx
1022− - include: mnemonics-intel-isa-sha
1023− - include: mnemonics-supplemental-amd
1024− - include: mnemonics-supplemental-cyrix
1025− - include: mnemonics-supplemental-via
1026− - include: mnemonics-undocumented
1027− - include: mnemonics-future-intel
1028− - include: mnemonics-pseudo-ops
1029− #- include: mnemonics-invalid
1030− mnemonics-general-purpose:
1031− - match: '(?i)\b(?:mov(?:[sz]x)?|cmov(?:n?[abceglopsz]|n?[abgl]e|p[eo]))\b'
1032− scope: keyword.operator.word.mnemonic.general-purpose.data-transfer.mov
1033− - match: '(?i)\b(xchg|bswap|xadd|cmpxchg(8b)?)\b'
1034− scope: keyword.operator.word.mnemonic.general-purpose.data-transfer.xchg
1035− - match: '(?i)\b((push|pop)(ad?)?|cwde?|cdq|cbw)\b'
1036− scope: keyword.operator.word.mnemonic.general-purpose.data-transfer.other
1037− - match: '(?i)\b(adcx?|adox|add|sub|sbb|i?mul|i?div|inc|dec|neg|cmp)\b'
1038− scope: keyword.operator.word.mnemonic.general-purpose.binary-arithmetic
1039− - match: '(?i)\b(daa|das|aaa|aas|aam|aad)\b'
1040− scope: keyword.operator.word.mnemonic.general-purpose.decimal-arithmetic
1041− - match: '(?i)\b(and|x?or|not)\b'
1042− scope: keyword.operator.word.mnemonic.general-purpose.logical
1043− - match: '(?i)\b(s[ah][rl]|sh[rl]d|r[co][rl])\b'
1044− scope: keyword.operator.word.mnemonic.general-purpose.rotate
1045− - match: '(?i)\b(set(n?[abceglopsz]|n?[abgl]e|p[eo]))\b'
1046− scope: keyword.operator.word.mnemonic.general-purpose.bit-and-byte.set
1047− - match: '(?i)\b(bt[crs]?|bs[fr]|test|crc32|popcnt)\b'
1048− scope: keyword.operator.word.mnemonic.general-purpose.bit-and-byte.other
1049− - match: '(?i)\b(jmp|jn?[abceglopsz]|jn?[abgl]e|jp[eo]|j[er]?cxz)\b'
1050− scope: keyword.operator.word.mnemonic.general-purpose.control-transfer.jmp
1051− - match: '(?i)\b(loop(n?[ez])?|call|ret|iret[dq]?|into?|bound|enter|leave)\b'
1052− scope: keyword.operator.word.mnemonic.general-purpose.control-transfer.other
1053− - match: '(?i)\b((mov|cmp|sca|lod|sto)(s[bdw]?)|rep(n?[ez])?)\b'
1054− scope: keyword.operator.word.mnemonic.general-purpose.strings
1055− - match: '(?i)\b((in|out)(s[bdw]?)?)\b'
1056− scope: keyword.operator.word.mnemonic.general-purpose.io
1057− - match: '(?i)\b((st|cl)[cdi]|cmc|[ls]ahf|(push|pop)f[dq]?)\b'
1058− scope: keyword.operator.word.mnemonic.general-purpose.flag-control
1059− - match: '(?i)\b(l[defgs]s)\b'
1060− scope: keyword.operator.word.mnemonic.general-purpose.segment-registers
1061− - match: '(?i)\b(lea|nop|ud2|xlatb?|cpuid|movbe)\b'
1062− scope: keyword.operator.word.mnemonic.general-purpose.misc
1063− - match: '(?i)\b(rdrand|rdseed)\b'
1064− scope: keyword.operator.word.mnemonic.general-purpose.rng
1065− - match: '(?i)\b(andn|bextr|bls(i|r|msk)|bzhi|pdep|pext|[lt]zcnt|(mul|ror|sar|shl|shr)x)\b'
1066− scope: keyword.operator.word.mnemonic.general-purpose.bmi
1067− mnemonics-fpu:
1068− - match: '(?i)\b(fcmov(n?([beu]|be)))\b'
1069− scope: keyword.operator.word.mnemonic.fpu.data-transfer.mov
1070− - match: '(?i)\b(f(i?(ld|stp?)|b(ld|stp)|xch))\b'
1071− scope: keyword.operator.word.mnemonic.fpu.data-transfer.other
1072− - match: '(?i)\b(f((add|div|mul|sub)p?|i(add|div|mul|sub)|(div|sub)rp?|i(div|sub)r))\b'
1073− scope: keyword.operator.word.mnemonic.fpu.basic-arithmetic.basic
1074− - match: '(?i)\b(f(prem1?|abs|chs|rndint|scale|sqrt|xtract))\b'
1075− scope: keyword.operator.word.mnemonic.fpu.basic-arithmetic.other
1076− - match: '(?i)\b(f(u?com[ip]?p?|icomp?|tst|xam))\b'
1077− scope: keyword.operator.word.mnemonic.fpu.comparison
1078− - match: '(?i)\b(f(sin|cos|sincos|pa?tan|2xm1|yl2x(p1)?))\b'
1079− scope: keyword.operator.word.mnemonic.fpu.transcendental
1080− - match: '(?i)\b(fld(1|z|pi|l2[et]|l[ng]2))\b'
1081− scope: keyword.operator.word.mnemonic.fpu.load-constants
1082− - match: '(?i)\b(f((inc|dec)stp|free|n?(init|clex|st[cs]w|stenv|save)|ld(cw|env)|rstor|nop)|f?wait)\b'
1083− scope: keyword.operator.word.mnemonic.fpu.control-management
1084− - match: '(?i)\b(fx(save|rstor)(64)?)\b'
1085− scope: keyword.operator.word.mnemonic.fpu.state-management
1086− mnemonics-mmx:
1087− - match: '(?i)\b(mov[dq])\b'
1088− scope: keyword.operator.word.mnemonic.mmx.data-transfer
1089− - match: '(?i)\b(pack(ssdw|[su]swb)|punpck[hl](bw|dq|wd))\b'
1090− scope: keyword.operator.word.mnemonic.mmx.conversion
1091− - match: '(?i)\b(p(((add|sub)(d|(u?s)?[bw]))|maddwd|mul[lh]w))\b'
1092− scope: keyword.operator.word.mnemonic.mmx.packed-arithmetic
1093− - match: '(?i)\b(pcmp((eq|gt)[bdw]))\b'
1094− scope: keyword.operator.word.mnemonic.mmx.comparison
1095− - match: '(?i)\b(pandn?|px?or)\b'
1096− scope: keyword.operator.word.mnemonic.mmx.logical
1097− - match: '(?i)\b(ps([rl]l[dwq]|raw|rad))\b'
1098− scope: keyword.operator.word.mnemonic.mmx.shift-and-rotate
1099− - match: '(?i)\b(emms)\b'
1100− scope: keyword.operator.word.mnemonic.mmx.state-management
1101− mnemonics-sse:
1102− - match: '(?i)\b(mov(([ahlu]|hl|lh|msk)ps|ss))\b'
1103− scope: keyword.operator.word.mnemonic.sse.data-transfer
1104− - match: '(?i)\b((add|div|max|min|mul|rcp|r?sqrt|sub)[ps]s)\b'
1105− scope: keyword.operator.word.mnemonic.sse.packed-arithmetic
1106− - match: '(?i)\b(cmp[ps]s|u?comiss)\b'
1107− scope: keyword.operator.word.mnemonic.sse.comparison
1108− - match: '(?i)\b((andn?|x?or)ps)\b'
1109− scope: keyword.operator.word.mnemonic.sse.logical
1110− - match: '(?i)\b((shuf|unpck[hl])ps)\b'
1111− scope: keyword.operator.word.mnemonic.sse.shuffle-and-unpack
1112− - match: '(?i)\b(cvt(pi2ps|si2ss|ps2pi|tps2pi|ss2si|tss2si))\b'
1113− scope: keyword.operator.word.mnemonic.sse.conversion
1114− - match: '(?i)\b((ld|st)mxcsr)\b'
1115− scope: keyword.operator.word.mnemonic.sse.state-management
1116− - match: '(?i)\b(p(avg[bw]|extrw|insrw|(max|min)(sw|ub)|sadbw|shufw|mulhuw|movmskb))\b'
1117− scope: keyword.operator.word.mnemonic.sse.simd-integer
1118− - match: '(?i)\b(maskmovq|movntps|sfence)\b'
1119− scope: keyword.operator.word.mnemonic.sse.cacheability-control
1120− - match: '(?i)\b(prefetch(nta|t[0-2]|w(t1)?))\b'
1121− scope: keyword.operator.word.mnemonic.sse.prefetch
1122− mnemonics-sse2:
1123− - match: '(?i)\b(mov([auhl]|msk)pd)\b'
1124− scope: keyword.operator.word.mnemonic.sse2.data-transfer
1125− - match: '(?i)\b((add|div|max|min|mul|sub|sqrt)[ps]d)\b'
1126− scope: keyword.operator.word.mnemonic.sse2.packed-arithmetic
1127− - match: '(?i)\b((andn?|x?or)pd)\b'
1128− scope: keyword.operator.word.mnemonic.sse2.logical
1129− - match: '(?i)\b((cmpp|u?comis)d)\b'
1130− scope: keyword.operator.word.mnemonic.sse2.compare
1131− - match: '(?i)\b((shuf|unpck[hl])pd)\b'
1132− scope: keyword.operator.word.mnemonic.sse2.shuffle-and-unpack
1133− - match: '(?i)\b(cvt(dq2pd|pi2pd|ps2pd|pd2ps|si2sd|sd2ss|ss2sd|t?(pd2dq|pd2pi|sd2si)))\b'
1134− scope: keyword.operator.word.mnemonic.sse2.conversion
1135− - match: '(?i)\b(cvt(dq2ps|ps2dq|tps2dq))\b'
1136− scope: keyword.operator.word.mnemonic.sse2.packed-floating-point
1137− - match: '(?i)\b(mov(dq[au]|q2dq|dq2q))\b'
1138− scope: keyword.operator.word.mnemonic.sse2.simd-integer.mov
1139− - match: '(?i)\b(p((add|sub|(s[lr]l|mulu|unpck[hl]q)d)q|shuf(d|[hl]w)))\b'
1140− scope: keyword.operator.word.mnemonic.sse2.simd-integer.other
1141− - match: '(?i)\b(clflush|[lm]fence|pause|maskmovdqu|movnt(dq|i|pd))\b'
1142− scope: keyword.operator.word.mnemonic.sse2.cacheability-control
1143− mnemonics-sse3:
1144− - match: '(?i)\b(fisttp|lddqu|(addsub|h(add|sub))p[sd]|mov(sh|sl|d)dup|monitor|mwait)\b'
1145− scope: keyword.operator.word.mnemonic.sse3
1146− - match: '(?i)\b(ph(add|sub)(s?w|d))\b'
1147− scope: keyword.operator.word.mnemonic.sse3.supplimental.horizontal-packed-arithmetic
1148− - match: '(?i)\b(p((abs|sign)[bdw]|maddubsw|mulhrsw|shufb|alignr))\b'
1149− scope: keyword.operator.word.mnemonic.sse3.supplimental.other
1150− mnemonics-sse4:
1151− - match: '(?i)\b(pmul(ld|dq)|dpp[ds])\b'
1152− scope: keyword.operator.word.mnemonic.sse4.1.arithmetic
1153− - match: '(?i)\b(movntdqa)\b'
1154− scope: keyword.operator.word.mnemonic.sse4.1.load-hint
1155− - match: '(?i)\b(blendv?p[ds]|pblend(vb|w))\b'
1156− scope: keyword.operator.word.mnemonic.sse4.1.packed-blending
1157− - match: '(?i)\b(p(min|max)(u[dw]|s[bd]))\b'
1158− scope: keyword.operator.word.mnemonic.sse4.1.packed-integer
1159− - match: '(?i)\b(round[ps][sd])\b'
1160− scope: keyword.operator.word.mnemonic.sse4.1.packed-floating-point
1161− - match: '(?i)\b((extract|insert)ps|p((ins|ext)(r[bdq])))\b'
1162− scope: keyword.operator.word.mnemonic.sse4.1.insertion-and-extraction
1163− - match: '(?i)\b(pmov([sz]x(b[dqw]|dq|wd|wq)))\b'
1164− scope: keyword.operator.word.mnemonic.sse4.1.conversion
1165− - match: '(?i)\b(mpsadbw|phminposuw|ptest|pcmpeqq|packusdw)\b'
1166− scope: keyword.operator.word.mnemonic.sse4.1.other
1167− - match: '(?i)\b(pcmp([ei]str[im]|gtq))\b'
1168− scope: keyword.operator.word.mnemonic.sse4.2
1169− mnemonics-aesni:
1170− - match: '(?i)\b(aes((dec|enc)(last)?|imc|keygenassist)|pclmulqdq)\b'
1171− scope: keyword.operator.word.mnemonic.aesni
1172− mnemonics-avx:
1173− - match: '(?i)\b(v((test|permil|maskmov)p[ds]|zero(all|upper)|(perm2|insert|extract|broadcast)f128|broadcasts[ds]))\b'
1174− scope: keyword.operator.word.mnemonic.avx
1175− - match: '(?i)\b(vaes((dec|enc)(last)?|imc|keygenassist)|vpclmulqdq)\b'
1176− scope: keyword.operator.word.mnemonic.avx.promoted.aes
1177− - match: '(?i)\b(v((cmp[ps]|u?comis)[ds]|pcmp([ei]str[im]|(eq|gt)[bdqw])))\b'
1178− scope: keyword.operator.word.mnemonic.avx.promoted.comparison
1179− - match: '(?i)\b(v(cvt(dq2pd|dq2ps|pd2ps|ps2pd|sd2ss|si2sd|si2ss|ss2sd|t?(pd2dq|ps2dq|sd2si|ss2si))))\b'
1180− scope: keyword.operator.word.mnemonic.avx.promoted.conversion
1181− - match: '(?i)\b(vh((add|sub)p[ds])|vph((add|sub)([dw]|sw)|minposuw))\b'
1182− scope: keyword.operator.word.mnemonic.avx.promoted.horizontal-packed-arithmetic
1183− - match: '(?i)\b(v((andn?|x?or)p[ds]))\b'
1184− scope: keyword.operator.word.mnemonic.avx.promoted.logical
1185− - match: '(?i)\b(v(mov(([ahl]|msk|nt|u)p[ds]|(hl|lh)ps|s([ds]|[hl]dup)|q)))\b'
1186− scope: keyword.operator.word.mnemonic.avx.promoted.mov
1187− - match: '(?i)\b(v((add|div|mul|sub|max|min|round|sqrt)[ps][ds]|(addsub|dp)p[ds]|(rcp|rsqrt)[ps]s))\b'
1188− scope: keyword.operator.word.mnemonic.avx.promoted.packed-arithmetic
1189− - match: '(?i)\b(v(pack[su]s(dw|wb)|punpck[hl](bw|dq|wd|qdq)|unpck[hl]p[ds]))\b'
1190− scope: keyword.operator.word.mnemonic.avx.promoted.packed-conversion
1191− - match: '(?i)\b(vp(shuf([bd]|[hl]w))|vshufp[ds])\b'
1192− scope: keyword.operator.word.mnemonic.avx.promoted.packed-shuffle
1193− - match: '(?i)\b(vp((abs|sign|(max|min)[su])[bdw]|(add|sub)([bdqw]|u?s[bw])|avg[bw]|extr[bdqw]|madd(wd|ubsw)|mul(hu?w|hrsw|l[dw]|u?dq)|sadbw))\b'
1194− scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.arithmetic
1195− - match: '(?i)\b(vp(andn?|x?or))\b'
1196− scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.logical
1197− - match: '(?i)\b(vpblend(vb|w))\b'
1198− scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.blending
1199− - match: '(?i)\b(vpmov(mskb|[sz]x(b[dqw]|w[dq]|dq)))\b'
1200− scope: keyword.operator.word.mnemonic.avx.promoted.supplemental.mov
1201− - match: '(?i)\b(vp(insr[bdqw]|sll(dq|[dqw])|srl(dq)))\b'
1202− scope: keyword.operator.word.mnemonic.avx.promoted.simd-integer
1203− - match: '(?i)\b(vp(sra[dwq]|srl[dqw]))\b'
1204− scope: keyword.operator.word.mnemonic.avx.promoted.shift-and-rotate
1205− - match: '(?i)\b(vblendv?p[ds])\b'
1206− scope: keyword.operator.word.mnemonic.avx.promoted.packed-blending
1207− - match: '(?i)\b(vp(test|alignr))\b'
1208− scope: keyword.operator.word.mnemonic.avx.promoted.packed-other
1209− - match: '(?i)\b(vmov(d(dup|qa|qu)?))\b'
1210− scope: keyword.operator.word.mnemonic.avx.promoted.simd-integer.mov
1211− - match: '(?i)\b(v((extract|insert)ps|lddqu|(ld|st)mxcsr|mpsadbw))\b'
1212− scope: keyword.operator.word.mnemonic.avx.promoted.other
1213− - match: '(?i)\b(v(maskmovdqu|movntdqa?))\b'
1214− scope: keyword.operator.word.mnemonic.avx.promoted.cacheability-control
1215− - match: '(?i)\b(vcvt(ph2ps|ps2ph))\b'
1216− scope: keyword.operator.word.mnemonic.16-bit-floating-point-conversion
1217− - match: '(?i)\b(vfn?m((add|sub)(132|213|231)[ps][ds])|vfm((addsub|subadd)(132|213|231)p[ds]))\b'
1218− scope: keyword.operator.word.mnemonic.fma
1219− mnemonics-avx2:
1220− - match: '(?i)\b(v((broadcast|extract|insert|perm2)i128|pmaskmov[dq]|perm([dsq]|p[sd])))\b'
1221− scope: keyword.operator.word.mnemonic.avx2.promoted.simd
1222− - match: '(?i)\b(vpbroadcast[bdqw])\b'
1223− scope: keyword.operator.word.mnemonic.avx2.promoted.packed
1224− - match: '(?i)\b(vp(blendd|s[lr]lv[dq]|sravd))\b'
1225− scope: keyword.operator.word.mnemonic.avx2.blend
1226− - match: '(?i)\b(vp?gather[dq][dq]|vgather([dq]|dq)p[ds])\b'
1227− scope: keyword.operator.word.mnemonic.avx2.gather
1228− mnemonics-tsx:
1229− - match: '(?i)\b(x(abort|acquire|release|begin|end|test))\b'
1230− scope: keyword.operator.word.mnemonic.tsx
1231− mnemonics-system:
1232− - match: '(?i)\b((cl|st)ac|[ls]([gli]dt|tr|msw)|clts|arpl|lar|lsl|ver[rw]|inv(d|lpg|pcid)|wbinvd)\b'
1233− scope: keyword.operator.word.mnemonic.system
1234− - match: '(?i)\b(lock|hlt|rsm|(rd|wr)(msr|pkru|[fg]sbase)|rd(pmc|tscp?)|sys(enter|exit))\b'
1235− scope: keyword.operator.word.mnemonic.system
1236− - match: '(?i)\b(x((save(c|opt|s)?|rstors?)(64)?|[gs]etbv))\b'
1237− scope: keyword.operator.word.mnemonic.system
1238− mnemonics-64bit:
1239− - match: '(?i)\b(cdqe|cqo|(cmp|lod|mov|sto)sq|cmpxchg16b|mov(ntq|sxd)|scasq|swapgs|sys(call|ret))\b'
1240− scope: keyword.operator.word.mnemonic.64-bit-mode
1241− mnemonics-vmx:
1242− - match: '(?i)\b(vm(ptr(ld|st)|clear|read|write|launch|resume|xo(ff|n)|call|func)|inv(ept|vpid))\b'
1243− scope: keyword.operator.word.mnemonic.vmx
1244− mnemonics-smx:
1245− - match: '(?i)\b(getsec)\b'
1246− scope: keyword.operator.word.mnemonic.smx.getsec
1247− - match: '(?i)\b(capabilities|enteraccs|exitac|senter|sexit|parameters|smctrl|wakeup)\b'
1248− scope: support.constant
1249− mnemonics-intel-isa-sgx:
1250− - match: '(?i)\be(add|block|create|dbg(rd|wr)|extend|init|ld[bu]|pa|remove|track|wb)\b'
1251− scope: keyword.operator.word.mnemonic.sgx1.supervisor
1252− - match: '(?i)\be(enter|exit|getkey|report|resume)\b'
1253− scope: keyword.operator.word.mnemonic.sgx1.user
1254− - match: '(?i)\be(aug|mod(pr|t))\b'
1255− scope: keyword.operator.word.mnemonic.sgx2.supervisor
1256− - match: '(?i)\be(accept(copy)?|modpe)\b'
1257− scope: keyword.operator.word.mnemonic.sgx2.user
1258− mnemonics-intel-isa-mpx:
1259− - match: '(?i)\b(bnd(mk|c[lnu]|mov|ldx|stx))\b'
1260− scope: keyword.operator.word.mnemonic.mpx
1261− mnemonics-intel-isa-sha:
1262− - match: '(?i)\b(sha(1rnds4|256rnds2|1nexte|(1|256)msg[12]))\b'
1263− scope: keyword.operator.word.mnemonic.sha
1264− mnemonics-supplemental-amd:
1265− - match: '(?i)\b(bl([cs](fill|ic?|msk)|cs)|t1mskc|tzmsk)\b'
1266− scope: keyword.operator.word.mnemonic.supplemental.amd.general-purpose
1267− - match: '(?i)\b(clgi|int3|invlpga|iretw|skinit|stgi|vm(load|mcall|run|save)|monitorx|mwaitx)\b'
1268− scope: keyword.operator.word.mnemonic.supplemental.amd.system
1269− - match: '(?i)\b([ls]lwpcb|lwp(ins|val))\b'
1270− scope: keyword.operator.word.mnemonic.supplemental.amd.profiling
1271− - match: '(?i)\b(movnts[ds])\b'
1272− scope: keyword.operator.word.mnemonic.supplemental.amd.memory-management
1273− - match: '(?i)\b(prefetch|clzero)\b'
1274− scope: keyword.operator.word.mnemonic.supplemental.amd.cache-management
1275− - match: '(?i)\b((extr|insert)q)\b'
1276− scope: keyword.operator.word.mnemonic.supplemental.amd.sse4.a
1277− - match: '(?i)\b(vfn?m((add|sub)[ps][ds])|vfm((addsub|subadd)p[ds]))\b'
1278− scope: keyword.operator.word.mnemonic.supplemental.amd.fma4
1279− - match: '(?i)\b(vp(cmov|(comu?|rot|sh[al])[bdqw]|mac(s?s(d(d|q[hl])|w[dw]))|madcss?wd|perm))\b'
1280− scope: keyword.operator.word.mnemonic.supplemental.amd.xop.simd
1281− - match: '(?i)\b(vph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd)))\b'
1282− scope: keyword.operator.word.mnemonic.supplemental.amd.xop.simd-horizontal
1283− - match: '(?i)\b(vfrcz[ps][ds]|vpermil2p[ds])\b'
1284− scope: keyword.operator.word.mnemonic.supplemental.amd.xop.other
1285− - match: '(?i)\b(femms)\b'
1286− scope: keyword.operator.word.mnemonic.supplemental.amd.3dnow
1287− - match: '(?i)\b(p(avgusb|(f2i|i2f)[dw]|mulhrw|swapd)|pf((p?n)?acc|add|max|min|mul|rcp(it[12])?|rsqit1|rsqrt|subr?))\b'
1288− scope: keyword.operator.word.mnemonic.supplemental.amd.3dnow.simd
1289− - match: '(?i)\b(pfcmp(eq|ge|gt))\b'
1290− scope: keyword.operator.word.mnemonic.supplemental.amd.3dnow.comparison
1291− mnemonics-supplemental-cyrix:
1292− - match: '(?i)\b((sv|rs)dc|(wr|rd)shr|paddsiw)\b'
1293− scope: keyword.operator.word.mnemonic.supplemental.cyrix
1294− mnemonics-supplemental-via:
1295− - match: '(?i)\b(montmul)\b'
1296− scope: keyword.operator.word.mnemonic.supplemental.via
1297− - match: '(?i)\b(x(store(rng)?|crypt(ecb|cbc|ctr|cfb|ofb)|sha(1|256)))\b'
1298− scope: keyword.operator.word.mnemonic.supplemental.via.padlock
1299− mnemonics-undocumented:
1300− - match: '(?i)\b(ret[nf]|icebp|int1|int03|smi|ud1)\b'
1301− scope: keyword.operator.word.mnemonic.undocumented
1302− mnemonics-future-intel:
1303− - include: mnemonics-future-intel-avx512
1304− - include: mnemonics-future-intel-opmask
1305− - include: mnemonics-future-intel-cet
1306− - include: mnemonics-future-intel-other
1307− mnemonics-future-intel-avx512:
1308− - match: '(?i)\b(vblendm(pd|ps)|vpblendm[bdqw])\b'
1309− scope: keyword.operator.word.mnemonic.avx512.blend
1310− - match: '(?i)\b(vbroadcast[fi](32x[248]|64x[24])|v(extract|insert)[fi](32x[48]|64x[24])|vshuf[fi](32x4|64x2)|vpbroadcastm(b2q|w2d))\b'
1311− scope: keyword.operator.word.mnemonic.avx512.bits-mov
1312− - match: '(?i)\b(v(compress|expand)p[ds]|vp(compress|expand|conflict)[dq])\b'
1313− scope: keyword.operator.word.mnemonic.avx512.compress
1314− - match: '(?i)\b(vcvt(t?p[sd]2(udq|u?qq)|(udq|u?qq)2p[ds]|t?s[ds]2usi|usi2s[ds]))\b'
1315− scope: keyword.operator.word.mnemonic.avx512.conversion
1316− - match: '(?i)\b(v(fixupimm|fpclass|get(exp|mant)|range|(rcp|rsqrt)(14|28)|reduce|rndscale|scalef)([ps][ds]))\b'
1317− scope: keyword.operator.word.mnemonic.avx512.math
1318− - match: '(?i)\b(v(exp2p[ds]|(scatter|(gather|scatter)pf[01])[dq]p[ds]))\b'
1319− scope: keyword.operator.word.mnemonic.avx512.math
1320− - match: '(?i)\b(vmovdq(a(32|64)|u(8|16|32|64)))\b'
1321− scope: keyword.operator.word.mnemonic.avx512.simd-integer
1322− - match: '(?i)\b(vp(andn?|x?or)[dq])\b'
1323− scope: keyword.operator.word.mnemonic.avx512.logical
1324− - match: '(?i)\b(vpcmpu?[dqw])\b'
1325− scope: keyword.operator.word.mnemonic.avx512.packed-comparison
1326− - match: '(?i)\b(vp(absq|(lzcnt|ternlog)[dq]|madd52[lh]uq|(max|min)[su]q|mullq))\b'
1327− scope: keyword.operator.word.mnemonic.avx512.packed-math
1328− - match: '(?i)\b(vpmov(m2[bdqw]|[bdqw]2m|(u?s)?([qd][bw]|qd|wb)))\b'
1329− scope: keyword.operator.word.mnemonic.avx512.packed-mov
1330− - match: '(?i)\b(vp(ro[rl]v?[dq]|scatter[dq][dq]))\b'
1331− scope: keyword.operator.word.mnemonic.avx512.packed-shift
1332− - match: '(?i)\b(vptestn?m[bdqw])\b'
1333− scope: keyword.operator.word.mnemonic.avx512.packed-test
1334− - match: '(?i)\b(vperm([bdw]|[it]2([bdwq]|p[ds])))\b'
1335− scope: keyword.operator.word.mnemonic.avx512.permutations
1336− - match: '(?i)\b(valign[dq]|vdbpsadbw|vpmultishiftqb|vpsrav[dqw])\b'
1337− scope: keyword.operator.word.mnemonic.avx512.other
1338− mnemonics-future-intel-opmask:
1339− - match: '(?i)\b(k(add|andn?|(xn?)?or|mov|not|(or)?test|shift[lr])[bdqw]|kunpck(bw|wd|dq))\b'
1340− scope: keyword.operator.word.mnemonic.opmask
1341− mnemonics-future-intel-cet:
1342− - match: '(?i)\b((inc|save|rstor)ssp|wru?ss|(set|clr)ssbsy|endbranch|endbr(32|64))\b'
1343− scope: keyword.operator.word.mnemonic.cet
1344− mnemonics-future-intel-other:
1345− - match: '(?i)\b(clflushopt|clwb|pcommit)\b'
1346− scope: keyword.operator.word.mnemonic.other
1347− mnemonics-pseudo-ops:
1348− - match: '(?i)\b(cmp(n?(eq|lt|le)|(un)?ord)[ps][ds])\b'
1349− scope: keyword.pseudo-mnemonic.sse2.compare
1350− - match: '(?i)\b(v?pclmul([hl]q[hl]q|[hl]qh)dq)\b'
1351− scope: keyword.pseudo-mnemonic.avx.promoted.aes
1352− - match: '(?i)\b(vcmp(eq(_(os|uq|us))?|neq(_(oq|os|us))?|[gl][et](_oq)?|n[gl][et](_uq)?|(un)?ord(_s)?|false(_os)?|true(_us)?)[ps][ds])\b'
1353− scope: keyword.pseudo-mnemonic.avx.promoted.comparison
1354− - match: '(?i)\b(vpcom(n?eq|[gl][et]|false|true)(b|uw))\b'
1355− scope: keyword.pseudo-mnemonic.supplemental.amd.xop.simd
1356− mnemonics-invalid:
1357− - include: mnemonics-invalid-amd-sse5
1358− mnemonics-invalid-amd-sse5:
1359− - match: '(?i)\b(com[ps][ds]|pcomu?[bdqw])\b'
1360− scope: invalid.keyword.operator.word.mnemonic.sse5.comparison
1361− - match: '(?i)\b(cvtp(h2ps|s2ph)|frcz[ps][ds])\b'
1362− scope: invalid.keyword.operator.word.mnemonic.sse5.conversion
1363− - match: '(?i)\b(fn?m((add|sub)[ps][ds])|ph(addu?(b[dqw]|w[dq]|dq)|sub(bw|dq|wd))|pma(css?(d(d|q[hl])|w[dw])|dcss?wd))\b'
1364− scope: invalid.keyword.operator.word.mnemonic.sse5.packed-arithmetic
1365− - match: '(?i)\b(pcmov|permp[ds]|pperm|prot[bdqw]|psh[al][bdqw])\b'
1366− scope: invalid.keyword.operator.word.mnemonic.sse5.simd-integer
1367−...