Commit | Line | Data |
3fea05b9 |
1 | # Copyright (c) 2005 - 2006 Hans Jeuken. All rights reserved. |
2 | # This program is free software; you can redistribute it and/or |
3 | # modify it under the same terms as Perl itself. |
4 | |
5 | # This file was generated from the 'nasm.xml' file of the syntax highlight |
6 | # engine of the kate text editor (http://www.kate-editor.org |
7 | |
8 | #kate xml version 1.20 |
9 | #kate version 2.3 |
10 | #kate author Nicola Gigante (nicola.gigante@gmail.com) |
11 | #generated: Sun Feb 3 22:02:05 2008, localtime |
12 | |
13 | package Syntax::Highlight::Engine::Kate::Intel_x86_NASM; |
14 | |
15 | our $VERSION = '0.06'; |
16 | |
17 | use strict; |
18 | use warnings; |
19 | use base('Syntax::Highlight::Engine::Kate::Template'); |
20 | |
21 | sub new { |
22 | my $proto = shift; |
23 | my $class = ref($proto) || $proto; |
24 | my $self = $class->SUPER::new(@_); |
25 | $self->attributes({ |
26 | 'BaseN' => 'BaseN', |
27 | 'Char' => 'Char', |
28 | 'Comment' => 'Comment', |
29 | 'Data' => 'DataType', |
30 | 'Float' => 'Float', |
31 | 'Instructions' => 'Keyword', |
32 | 'Label' => 'Function', |
33 | 'NASM Keywords' => 'Keyword', |
34 | 'Normal Text' => 'Normal', |
35 | 'Number' => 'DecVal', |
36 | 'Preprocessor' => 'Others', |
37 | 'Registers' => 'Keyword', |
38 | 'String' => 'String', |
39 | }); |
40 | $self->listAdd('Data', |
41 | 'byte', |
42 | 'db', |
43 | 'dd', |
44 | 'dq', |
45 | 'dt', |
46 | 'dw', |
47 | 'dword', |
48 | 'equ', |
49 | 'incbin', |
50 | 'ptr', |
51 | 'qword', |
52 | 'resb', |
53 | 'resd', |
54 | 'resq', |
55 | 'rest', |
56 | 'resw', |
57 | 'short', |
58 | 'times', |
59 | 'word', |
60 | ); |
61 | $self->listAdd('NASM Keywords', |
62 | '__FILE__', |
63 | '__LINE__', |
64 | '__NASM_MAJOR__', |
65 | '__NASM_MINOR__', |
66 | '__NASM_SUBMINOR__', |
67 | '__NASM_VERSION_ID__', |
68 | '__NASM_VER__', |
69 | '___NASM_PATCHLEVEL__', |
70 | '__sect__', |
71 | 'absolute', |
72 | 'align', |
73 | 'alignb', |
74 | 'at', |
75 | 'bits', |
76 | 'common', |
77 | 'endstruc', |
78 | 'extern', |
79 | 'global', |
80 | 'iend', |
81 | 'istruc', |
82 | 'org', |
83 | 'section', |
84 | 'seg', |
85 | 'segment', |
86 | 'strict', |
87 | 'struc', |
88 | 'use16', |
89 | 'use32', |
90 | 'wrt', |
91 | ); |
92 | $self->listAdd('instructions', |
93 | 'aaa', |
94 | 'aaa', |
95 | 'aad', |
96 | 'aad', |
97 | 'aam', |
98 | 'aam', |
99 | 'aas', |
100 | 'aas', |
101 | 'adc', |
102 | 'adc', |
103 | 'add', |
104 | 'add', |
105 | 'addpd', |
106 | 'addpd', |
107 | 'addps', |
108 | 'addps', |
109 | 'addsd', |
110 | 'addsd', |
111 | 'addss', |
112 | 'addss', |
113 | 'and', |
114 | 'and', |
115 | 'andnpd', |
116 | 'andnpd', |
117 | 'andnps', |
118 | 'andnps', |
119 | 'andpd', |
120 | 'andpd', |
121 | 'andps', |
122 | 'andps', |
123 | 'arpl', |
124 | 'arpl', |
125 | 'bound', |
126 | 'bound', |
127 | 'bsf', |
128 | 'bsf', |
129 | 'bsr', |
130 | 'bsr', |
131 | 'bswap', |
132 | 'bswap', |
133 | 'bt', |
134 | 'bt', |
135 | 'btc', |
136 | 'btc', |
137 | 'btr', |
138 | 'btr', |
139 | 'bts', |
140 | 'bts', |
141 | 'call', |
142 | 'call', |
143 | 'cbw', |
144 | 'cbw', |
145 | 'cdq', |
146 | 'cdq', |
147 | 'clc', |
148 | 'clc', |
149 | 'cld', |
150 | 'cld', |
151 | 'clflush', |
152 | 'clflush', |
153 | 'cli', |
154 | 'cli', |
155 | 'clts', |
156 | 'clts', |
157 | 'cmc', |
158 | 'cmc', |
159 | 'cmovcc', |
160 | 'cmovcc', |
161 | 'cmp', |
162 | 'cmp', |
163 | 'cmpeqpd', |
164 | 'cmpeqpd', |
165 | 'cmpeqps', |
166 | 'cmpeqps', |
167 | 'cmpeqsd', |
168 | 'cmpeqsd', |
169 | 'cmpeqss', |
170 | 'cmpeqss', |
171 | 'cmplepd', |
172 | 'cmplepd', |
173 | 'cmpleps', |
174 | 'cmpleps', |
175 | 'cmplesd', |
176 | 'cmplesd', |
177 | 'cmpless', |
178 | 'cmpless', |
179 | 'cmpltpd', |
180 | 'cmpltpd', |
181 | 'cmpltps', |
182 | 'cmpltps', |
183 | 'cmpltsd', |
184 | 'cmpltsd', |
185 | 'cmpltss', |
186 | 'cmpltss', |
187 | 'cmpneqpd', |
188 | 'cmpneqpd', |
189 | 'cmpneqps', |
190 | 'cmpneqps', |
191 | 'cmpneqsd', |
192 | 'cmpneqsd', |
193 | 'cmpneqss', |
194 | 'cmpneqss', |
195 | 'cmpnlepd', |
196 | 'cmpnlepd', |
197 | 'cmpnleps', |
198 | 'cmpnleps', |
199 | 'cmpnlesd', |
200 | 'cmpnlesd', |
201 | 'cmpnless', |
202 | 'cmpnless', |
203 | 'cmpnltpd', |
204 | 'cmpnltpd', |
205 | 'cmpnltps', |
206 | 'cmpnltps', |
207 | 'cmpnltsd', |
208 | 'cmpnltsd', |
209 | 'cmpnltss', |
210 | 'cmpnltss', |
211 | 'cmpordpd', |
212 | 'cmpordpd', |
213 | 'cmpordps', |
214 | 'cmpordps', |
215 | 'cmpordsd', |
216 | 'cmpordsd', |
217 | 'cmpordss', |
218 | 'cmpordss', |
219 | 'cmppd', |
220 | 'cmppd', |
221 | 'cmpps', |
222 | 'cmpps', |
223 | 'cmpsb', |
224 | 'cmpsb', |
225 | 'cmpsd', |
226 | 'cmpsd', |
227 | 'cmpss', |
228 | 'cmpss', |
229 | 'cmpsw', |
230 | 'cmpsw', |
231 | 'cmpunordpd', |
232 | 'cmpunordpd', |
233 | 'cmpunordps', |
234 | 'cmpunordps', |
235 | 'cmpunordsd', |
236 | 'cmpunordsd', |
237 | 'cmpunordss', |
238 | 'cmpunordss', |
239 | 'cmpxchg', |
240 | 'cmpxchg', |
241 | 'cmpxchg486', |
242 | 'cmpxchg486', |
243 | 'cmpxchg8b', |
244 | 'cmpxchg8b', |
245 | 'comisd', |
246 | 'comisd', |
247 | 'comiss', |
248 | 'comiss', |
249 | 'cpuid', |
250 | 'cpuid', |
251 | 'cvtdq2pd', |
252 | 'cvtdq2pd', |
253 | 'cvtdq2ps', |
254 | 'cvtdq2ps', |
255 | 'cvtpd2dq', |
256 | 'cvtpd2dq', |
257 | 'cvtpd2pi', |
258 | 'cvtpd2pi', |
259 | 'cvtpd2ps', |
260 | 'cvtpd2ps', |
261 | 'cvtpi2pd', |
262 | 'cvtpi2pd', |
263 | 'cvtpi2ps', |
264 | 'cvtpi2ps', |
265 | 'cvtps2dq', |
266 | 'cvtps2dq', |
267 | 'cvtps2pd', |
268 | 'cvtps2pd', |
269 | 'cvtps2pi', |
270 | 'cvtps2pi', |
271 | 'cvtsd2si', |
272 | 'cvtsd2si', |
273 | 'cvtsd2ss', |
274 | 'cvtsd2ss', |
275 | 'cvtsi2sd', |
276 | 'cvtsi2sd', |
277 | 'cvtsi2ss', |
278 | 'cvtsi2ss', |
279 | 'cvtss2sd', |
280 | 'cvtss2sd', |
281 | 'cvtss2si', |
282 | 'cvtss2si', |
283 | 'cvttpd2dq', |
284 | 'cvttpd2dq', |
285 | 'cvttpd2pi', |
286 | 'cvttpd2pi', |
287 | 'cvttps2dq', |
288 | 'cvttps2dq', |
289 | 'cvttps2pi', |
290 | 'cvttps2pi', |
291 | 'cvttsd2si', |
292 | 'cvttsd2si', |
293 | 'cwd', |
294 | 'cwd', |
295 | 'cwde', |
296 | 'cwde', |
297 | 'daa', |
298 | 'daa', |
299 | 'das', |
300 | 'das', |
301 | 'dec', |
302 | 'dec', |
303 | 'div', |
304 | 'div', |
305 | 'divpd', |
306 | 'divpd', |
307 | 'divps', |
308 | 'divps', |
309 | 'divsd', |
310 | 'divsd', |
311 | 'divss', |
312 | 'divss', |
313 | 'emms', |
314 | 'emms', |
315 | 'enter', |
316 | 'enter', |
317 | 'f2xm1', |
318 | 'f2xm1', |
319 | 'fabs', |
320 | 'fabs', |
321 | 'fadd', |
322 | 'fadd', |
323 | 'faddp', |
324 | 'faddp', |
325 | 'fbld', |
326 | 'fbld', |
327 | 'fbstp', |
328 | 'fbstp', |
329 | 'fchs', |
330 | 'fchs', |
331 | 'fclex', |
332 | 'fclex', |
333 | 'fcmovb', |
334 | 'fcmovb', |
335 | 'fcmovbe', |
336 | 'fcmovbe', |
337 | 'fcmove', |
338 | 'fcmove', |
339 | 'fcmovnb', |
340 | 'fcmovnb', |
341 | 'fcmovnbe', |
342 | 'fcmovnbe', |
343 | 'fcmovne', |
344 | 'fcmovne', |
345 | 'fcmovnu', |
346 | 'fcmovnu', |
347 | 'fcmovu', |
348 | 'fcmovu', |
349 | 'fcom', |
350 | 'fcom', |
351 | 'fcomi', |
352 | 'fcomi', |
353 | 'fcomip', |
354 | 'fcomip', |
355 | 'fcomp', |
356 | 'fcomp', |
357 | 'fcompp', |
358 | 'fcompp', |
359 | 'fcos', |
360 | 'fcos', |
361 | 'fdecstp', |
362 | 'fdecstp', |
363 | 'fdisi', |
364 | 'fdisi', |
365 | 'fdiv', |
366 | 'fdiv', |
367 | 'fdivp', |
368 | 'fdivp', |
369 | 'fdivr', |
370 | 'fdivr', |
371 | 'fdivrp', |
372 | 'fdivrp', |
373 | 'femms', |
374 | 'femms', |
375 | 'feni', |
376 | 'feni', |
377 | 'ffree', |
378 | 'ffree', |
379 | 'ffreep', |
380 | 'ffreep', |
381 | 'fiadd', |
382 | 'fiadd', |
383 | 'ficom', |
384 | 'ficom', |
385 | 'ficomp', |
386 | 'ficomp', |
387 | 'fidiv', |
388 | 'fidiv', |
389 | 'fidivr', |
390 | 'fidivr', |
391 | 'fild', |
392 | 'fild', |
393 | 'fimul', |
394 | 'fimul', |
395 | 'fincstp', |
396 | 'fincstp', |
397 | 'finit', |
398 | 'finit', |
399 | 'fist', |
400 | 'fist', |
401 | 'fistp', |
402 | 'fistp', |
403 | 'fisub', |
404 | 'fisub', |
405 | 'fisubr', |
406 | 'fisubr', |
407 | 'fld', |
408 | 'fld', |
409 | 'fld1', |
410 | 'fld1', |
411 | 'fldcw', |
412 | 'fldcw', |
413 | 'fldenv', |
414 | 'fldenv', |
415 | 'fldl2e', |
416 | 'fldl2e', |
417 | 'fldl2t', |
418 | 'fldl2t', |
419 | 'fldlg2', |
420 | 'fldlg2', |
421 | 'fldln2', |
422 | 'fldln2', |
423 | 'fldpi', |
424 | 'fldpi', |
425 | 'fldz', |
426 | 'fldz', |
427 | 'fmul', |
428 | 'fmul', |
429 | 'fmulp', |
430 | 'fmulp', |
431 | 'fnclex', |
432 | 'fnclex', |
433 | 'fndisi', |
434 | 'fndisi', |
435 | 'fneni', |
436 | 'fneni', |
437 | 'fninit', |
438 | 'fninit', |
439 | 'fnop', |
440 | 'fnop', |
441 | 'fnsave', |
442 | 'fnsave', |
443 | 'fnstcw', |
444 | 'fnstcw', |
445 | 'fnstenv', |
446 | 'fnstenv', |
447 | 'fnstsw', |
448 | 'fnstsw', |
449 | 'fpatan', |
450 | 'fpatan', |
451 | 'fprem', |
452 | 'fprem', |
453 | 'fprem1', |
454 | 'fprem1', |
455 | 'fptan', |
456 | 'fptan', |
457 | 'frndint', |
458 | 'frndint', |
459 | 'frstor', |
460 | 'frstor', |
461 | 'fsave', |
462 | 'fsave', |
463 | 'fscale', |
464 | 'fscale', |
465 | 'fsetpm', |
466 | 'fsetpm', |
467 | 'fsin', |
468 | 'fsin', |
469 | 'fsincos', |
470 | 'fsincos', |
471 | 'fsqrt', |
472 | 'fsqrt', |
473 | 'fst', |
474 | 'fst', |
475 | 'fstcw', |
476 | 'fstcw', |
477 | 'fstenv', |
478 | 'fstenv', |
479 | 'fstp', |
480 | 'fstp', |
481 | 'fstsw', |
482 | 'fstsw', |
483 | 'fsub', |
484 | 'fsub', |
485 | 'fsubp', |
486 | 'fsubp', |
487 | 'fsubr', |
488 | 'fsubr', |
489 | 'fsubrp', |
490 | 'fsubrp', |
491 | 'ftst', |
492 | 'ftst', |
493 | 'fucom', |
494 | 'fucom', |
495 | 'fucomi', |
496 | 'fucomi', |
497 | 'fucomip', |
498 | 'fucomip', |
499 | 'fucomp', |
500 | 'fucomp', |
501 | 'fucompp', |
502 | 'fucompp', |
503 | 'fwait', |
504 | 'fwait', |
505 | 'fxam', |
506 | 'fxam', |
507 | 'fxch', |
508 | 'fxch', |
509 | 'fxrstor', |
510 | 'fxrstor', |
511 | 'fxsave', |
512 | 'fxsave', |
513 | 'fxtract', |
514 | 'fxtract', |
515 | 'fyl2x', |
516 | 'fyl2x', |
517 | 'fyl2xp1', |
518 | 'fyl2xp1', |
519 | 'hlt', |
520 | 'hlt', |
521 | 'ibts', |
522 | 'ibts', |
523 | 'icebp', |
524 | 'icebp', |
525 | 'idiv', |
526 | 'idiv', |
527 | 'imul', |
528 | 'imul', |
529 | 'in', |
530 | 'in', |
531 | 'inc', |
532 | 'inc', |
533 | 'insb', |
534 | 'insb', |
535 | 'insd', |
536 | 'insd', |
537 | 'insw', |
538 | 'insw', |
539 | 'int', |
540 | 'int', |
541 | 'int01', |
542 | 'int01', |
543 | 'int03', |
544 | 'int03', |
545 | 'int1', |
546 | 'int1', |
547 | 'int3', |
548 | 'int3', |
549 | 'into', |
550 | 'into', |
551 | 'invd', |
552 | 'invd', |
553 | 'invlpg', |
554 | 'invlpg', |
555 | 'iret', |
556 | 'iret', |
557 | 'iretd', |
558 | 'iretd', |
559 | 'iretw', |
560 | 'iretw', |
561 | 'jcc', |
562 | 'jcc', |
563 | 'jcxz', |
564 | 'jcxz', |
565 | 'jecxz', |
566 | 'jecxz', |
567 | 'jmp', |
568 | 'jmp', |
569 | 'lahf', |
570 | 'lahf', |
571 | 'lar', |
572 | 'lar', |
573 | 'ldmxcsr', |
574 | 'ldmxcsr', |
575 | 'lds', |
576 | 'lds', |
577 | 'lea', |
578 | 'lea', |
579 | 'leave', |
580 | 'leave', |
581 | 'les', |
582 | 'les', |
583 | 'lfence', |
584 | 'lfence', |
585 | 'lfs', |
586 | 'lfs', |
587 | 'lgdt', |
588 | 'lgdt', |
589 | 'lgs', |
590 | 'lgs', |
591 | 'lidt', |
592 | 'lidt', |
593 | 'lldt', |
594 | 'lldt', |
595 | 'lmsw', |
596 | 'lmsw', |
597 | 'loadall', |
598 | 'loadall', |
599 | 'loadall286', |
600 | 'loadall286', |
601 | 'lodsb', |
602 | 'lodsb', |
603 | 'lodsd', |
604 | 'lodsd', |
605 | 'lodsw', |
606 | 'lodsw', |
607 | 'loop', |
608 | 'loop', |
609 | 'loope', |
610 | 'loope', |
611 | 'loopne', |
612 | 'loopne', |
613 | 'loopnz', |
614 | 'loopnz', |
615 | 'loopz', |
616 | 'loopz', |
617 | 'lsl', |
618 | 'lsl', |
619 | 'lss', |
620 | 'lss', |
621 | 'ltr', |
622 | 'ltr', |
623 | 'maskmovdqu', |
624 | 'maskmovdqu', |
625 | 'maskmovq', |
626 | 'maskmovq', |
627 | 'maxpd', |
628 | 'maxpd', |
629 | 'maxps', |
630 | 'maxps', |
631 | 'maxsd', |
632 | 'maxsd', |
633 | 'maxss', |
634 | 'maxss', |
635 | 'mfence', |
636 | 'mfence', |
637 | 'minpd', |
638 | 'minpd', |
639 | 'minps', |
640 | 'minps', |
641 | 'minsd', |
642 | 'minsd', |
643 | 'minss', |
644 | 'minss', |
645 | 'mov', |
646 | 'mov', |
647 | 'movapd', |
648 | 'movapd', |
649 | 'movaps', |
650 | 'movaps', |
651 | 'movd', |
652 | 'movd', |
653 | 'movdq2q', |
654 | 'movdq2q', |
655 | 'movdqa', |
656 | 'movdqa', |
657 | 'movdqu', |
658 | 'movdqu', |
659 | 'movhlps', |
660 | 'movhlps', |
661 | 'movhpd', |
662 | 'movhpd', |
663 | 'movhps', |
664 | 'movhps', |
665 | 'movlhps', |
666 | 'movlhps', |
667 | 'movlpd', |
668 | 'movlpd', |
669 | 'movlps', |
670 | 'movlps', |
671 | 'movmskpd', |
672 | 'movmskpd', |
673 | 'movmskps', |
674 | 'movmskps', |
675 | 'movntdq', |
676 | 'movntdq', |
677 | 'movnti', |
678 | 'movnti', |
679 | 'movntpd', |
680 | 'movntpd', |
681 | 'movntps', |
682 | 'movntps', |
683 | 'movntq', |
684 | 'movntq', |
685 | 'movq', |
686 | 'movq', |
687 | 'movq2dq', |
688 | 'movq2dq', |
689 | 'movsb', |
690 | 'movsb', |
691 | 'movsd', |
692 | 'movsd', |
693 | 'movss', |
694 | 'movss', |
695 | 'movsw', |
696 | 'movsw', |
697 | 'movsx', |
698 | 'movsx', |
699 | 'movupd', |
700 | 'movupd', |
701 | 'movups', |
702 | 'movups', |
703 | 'movzx', |
704 | 'movzx', |
705 | 'mul', |
706 | 'mul', |
707 | 'mulpd', |
708 | 'mulpd', |
709 | 'mulps', |
710 | 'mulps', |
711 | 'mulsd', |
712 | 'mulsd', |
713 | 'mulss', |
714 | 'mulss', |
715 | 'neg', |
716 | 'neg', |
717 | 'nop', |
718 | 'nop', |
719 | 'not', |
720 | 'not', |
721 | 'or', |
722 | 'or', |
723 | 'orpd', |
724 | 'orpd', |
725 | 'orps', |
726 | 'orps', |
727 | 'out', |
728 | 'out', |
729 | 'outsb', |
730 | 'outsb', |
731 | 'outsd', |
732 | 'outsd', |
733 | 'outsw', |
734 | 'outsw', |
735 | 'packssdw', |
736 | 'packssdw', |
737 | 'packssdw', |
738 | 'packsswb', |
739 | 'packsswb', |
740 | 'packsswb', |
741 | 'packuswb', |
742 | 'packuswb', |
743 | 'packuswb', |
744 | 'paddb', |
745 | 'paddb', |
746 | 'paddb', |
747 | 'paddd', |
748 | 'paddd', |
749 | 'paddd', |
750 | 'paddq', |
751 | 'paddq', |
752 | 'paddsb', |
753 | 'paddsb', |
754 | 'paddsb', |
755 | 'paddsiw', |
756 | 'paddsiw', |
757 | 'paddsw', |
758 | 'paddsw', |
759 | 'paddsw', |
760 | 'paddusb', |
761 | 'paddusb', |
762 | 'paddusb', |
763 | 'paddusw', |
764 | 'paddusw', |
765 | 'paddusw', |
766 | 'paddw', |
767 | 'paddw', |
768 | 'paddw', |
769 | 'pand', |
770 | 'pand', |
771 | 'pand', |
772 | 'pandn', |
773 | 'pandn', |
774 | 'pandn', |
775 | 'pause', |
776 | 'pause', |
777 | 'paveb', |
778 | 'paveb', |
779 | 'pavgb', |
780 | 'pavgb', |
781 | 'pavgb', |
782 | 'pavgusb', |
783 | 'pavgusb', |
784 | 'pavgw', |
785 | 'pavgw', |
786 | 'pavgw', |
787 | 'pcmpeqb', |
788 | 'pcmpeqb', |
789 | 'pcmpeqb', |
790 | 'pcmpeqd', |
791 | 'pcmpeqd', |
792 | 'pcmpeqd', |
793 | 'pcmpeqw', |
794 | 'pcmpeqw', |
795 | 'pcmpeqw', |
796 | 'pcmpgtb', |
797 | 'pcmpgtb', |
798 | 'pcmpgtb', |
799 | 'pcmpgtd', |
800 | 'pcmpgtd', |
801 | 'pcmpgtd', |
802 | 'pcmpgtw', |
803 | 'pcmpgtw', |
804 | 'pcmpgtw', |
805 | 'pdistib', |
806 | 'pdistib', |
807 | 'pextrw', |
808 | 'pextrw', |
809 | 'pf2id', |
810 | 'pf2id', |
811 | 'pf2iw', |
812 | 'pf2iw', |
813 | 'pfacc', |
814 | 'pfacc', |
815 | 'pfadd', |
816 | 'pfadd', |
817 | 'pfcmpeq', |
818 | 'pfcmpeq', |
819 | 'pfcmpge', |
820 | 'pfcmpge', |
821 | 'pfcmpgt', |
822 | 'pfcmpgt', |
823 | 'pfmax', |
824 | 'pfmax', |
825 | 'pfmin', |
826 | 'pfmin', |
827 | 'pfmul', |
828 | 'pfmul', |
829 | 'pfnacc', |
830 | 'pfnacc', |
831 | 'pfpnacc', |
832 | 'pfpnacc', |
833 | 'pfrcp', |
834 | 'pfrcp', |
835 | 'pfrcpit1', |
836 | 'pfrcpit1', |
837 | 'pfrcpit2', |
838 | 'pfrcpit2', |
839 | 'pfrsqit1', |
840 | 'pfrsqit1', |
841 | 'pfrsqrt', |
842 | 'pfrsqrt', |
843 | 'pfsub', |
844 | 'pfsub', |
845 | 'pfsubr', |
846 | 'pfsubr', |
847 | 'pi2fd', |
848 | 'pi2fd', |
849 | 'pi2fw', |
850 | 'pi2fw', |
851 | 'pinsrw', |
852 | 'pinsrw', |
853 | 'pmachriw', |
854 | 'pmachriw', |
855 | 'pmaddwd', |
856 | 'pmaddwd', |
857 | 'pmagw', |
858 | 'pmagw', |
859 | 'pmaxsw', |
860 | 'pmaxsw', |
861 | 'pmaxub', |
862 | 'pmaxub', |
863 | 'pminsw', |
864 | 'pminsw', |
865 | 'pminub', |
866 | 'pminub', |
867 | 'pmovmskb', |
868 | 'pmovmskb', |
869 | 'pmulhriw', |
870 | 'pmulhriw', |
871 | 'pmulhrwa', |
872 | 'pmulhrwa', |
873 | 'pmulhrwc', |
874 | 'pmulhrwc', |
875 | 'pmulhuw', |
876 | 'pmulhuw', |
877 | 'pmulhw', |
878 | 'pmulhw', |
879 | 'pmulhw', |
880 | 'pmullw', |
881 | 'pmullw', |
882 | 'pmullw', |
883 | 'pmuludq', |
884 | 'pmuludq', |
885 | 'pmvgezb', |
886 | 'pmvgezb', |
887 | 'pmvlzb', |
888 | 'pmvlzb', |
889 | 'pmvnzb', |
890 | 'pmvnzb', |
891 | 'pmvzb', |
892 | 'pmvzb', |
893 | 'pop', |
894 | 'pop', |
895 | 'popa', |
896 | 'popa', |
897 | 'popad', |
898 | 'popad', |
899 | 'popaw', |
900 | 'popaw', |
901 | 'popf', |
902 | 'popf', |
903 | 'popfd', |
904 | 'popfd', |
905 | 'popfw', |
906 | 'popfw', |
907 | 'por', |
908 | 'por', |
909 | 'prefetch', |
910 | 'prefetch', |
911 | 'prefetchnta', |
912 | 'prefetchnta', |
913 | 'prefetcht0', |
914 | 'prefetcht0', |
915 | 'prefetcht1', |
916 | 'prefetcht1', |
917 | 'prefetcht2', |
918 | 'prefetcht2', |
919 | 'prefetchw', |
920 | 'prefetchw', |
921 | 'psadbw', |
922 | 'psadbw', |
923 | 'pshufd', |
924 | 'pshufd', |
925 | 'pshufhw', |
926 | 'pshufhw', |
927 | 'pshuflw', |
928 | 'pshuflw', |
929 | 'pshufw', |
930 | 'pshufw', |
931 | 'pslld', |
932 | 'pslld', |
933 | 'pslldq', |
934 | 'pslldq', |
935 | 'psllq', |
936 | 'psllq', |
937 | 'psllw', |
938 | 'psllw', |
939 | 'psrad', |
940 | 'psrad', |
941 | 'psraw', |
942 | 'psraw', |
943 | 'psrld', |
944 | 'psrld', |
945 | 'psrldq', |
946 | 'psrldq', |
947 | 'psrlq', |
948 | 'psrlq', |
949 | 'psrlw', |
950 | 'psrlw', |
951 | 'psubb', |
952 | 'psubb', |
953 | 'psubb', |
954 | 'psubd', |
955 | 'psubd', |
956 | 'psubd', |
957 | 'psubq', |
958 | 'psubq', |
959 | 'psubq', |
960 | 'psubsb', |
961 | 'psubsb', |
962 | 'psubsb', |
963 | 'psubsiw', |
964 | 'psubsiw', |
965 | 'psubsw', |
966 | 'psubsw', |
967 | 'psubsw', |
968 | 'psubusb', |
969 | 'psubusb', |
970 | 'psubusb', |
971 | 'psubusw', |
972 | 'psubusw', |
973 | 'psubusw', |
974 | 'psubw', |
975 | 'psubw', |
976 | 'psubw', |
977 | 'pswapd', |
978 | 'pswapd', |
979 | 'punpckhbw', |
980 | 'punpckhbw', |
981 | 'punpckhbw', |
982 | 'punpckhdq', |
983 | 'punpckhdq', |
984 | 'punpckhdq', |
985 | 'punpckhqdq', |
986 | 'punpckhqdq', |
987 | 'punpckhwd', |
988 | 'punpckhwd', |
989 | 'punpckhwd', |
990 | 'punpcklbw', |
991 | 'punpcklbw', |
992 | 'punpcklbw', |
993 | 'punpckldq', |
994 | 'punpckldq', |
995 | 'punpckldq', |
996 | 'punpcklqdq', |
997 | 'punpcklqdq', |
998 | 'punpcklwd', |
999 | 'punpcklwd', |
1000 | 'punpcklwd', |
1001 | 'push', |
1002 | 'push', |
1003 | 'pusha', |
1004 | 'pusha', |
1005 | 'pushad', |
1006 | 'pushad', |
1007 | 'pushaw', |
1008 | 'pushaw', |
1009 | 'pushf', |
1010 | 'pushf', |
1011 | 'pushfd', |
1012 | 'pushfd', |
1013 | 'pushfw', |
1014 | 'pushfw', |
1015 | 'pxor', |
1016 | 'pxor', |
1017 | 'rcl', |
1018 | 'rcl', |
1019 | 'rcpps', |
1020 | 'rcpps', |
1021 | 'rcpss', |
1022 | 'rcpss', |
1023 | 'rcr', |
1024 | 'rcr', |
1025 | 'rdmsr', |
1026 | 'rdmsr', |
1027 | 'rdpmc', |
1028 | 'rdpmc', |
1029 | 'rdshr', |
1030 | 'rdshr', |
1031 | 'rdtsc', |
1032 | 'rdtsc', |
1033 | 'ret', |
1034 | 'ret', |
1035 | 'retf', |
1036 | 'retf', |
1037 | 'retn', |
1038 | 'retn', |
1039 | 'rol', |
1040 | 'rol', |
1041 | 'ror', |
1042 | 'ror', |
1043 | 'rsdc', |
1044 | 'rsdc', |
1045 | 'rsldt', |
1046 | 'rsldt', |
1047 | 'rsm', |
1048 | 'rsm', |
1049 | 'rsqrtps', |
1050 | 'rsqrtps', |
1051 | 'rsqrtss', |
1052 | 'rsqrtss', |
1053 | 'rsts', |
1054 | 'rsts', |
1055 | 'sahf', |
1056 | 'sahf', |
1057 | 'sal', |
1058 | 'sal', |
1059 | 'salc', |
1060 | 'salc', |
1061 | 'sar', |
1062 | 'sar', |
1063 | 'sbb', |
1064 | 'sbb', |
1065 | 'scasb', |
1066 | 'scasb', |
1067 | 'scasd', |
1068 | 'scasd', |
1069 | 'scasw', |
1070 | 'scasw', |
1071 | 'setcc', |
1072 | 'setcc', |
1073 | 'sfence', |
1074 | 'sfence', |
1075 | 'sgdt', |
1076 | 'sgdt', |
1077 | 'shl', |
1078 | 'shl', |
1079 | 'shld', |
1080 | 'shld', |
1081 | 'shr', |
1082 | 'shr', |
1083 | 'shrd', |
1084 | 'shrd', |
1085 | 'shufpd', |
1086 | 'shufpd', |
1087 | 'shufps', |
1088 | 'shufps', |
1089 | 'sidt', |
1090 | 'sidt', |
1091 | 'sldt', |
1092 | 'sldt', |
1093 | 'smi', |
1094 | 'smi', |
1095 | 'smint', |
1096 | 'smint', |
1097 | 'smintold', |
1098 | 'smintold', |
1099 | 'smsw', |
1100 | 'smsw', |
1101 | 'sqrtpd', |
1102 | 'sqrtpd', |
1103 | 'sqrtps', |
1104 | 'sqrtps', |
1105 | 'sqrtsd', |
1106 | 'sqrtsd', |
1107 | 'sqrtss', |
1108 | 'sqrtss', |
1109 | 'stc', |
1110 | 'stc', |
1111 | 'std', |
1112 | 'std', |
1113 | 'sti', |
1114 | 'sti', |
1115 | 'stmxcsr', |
1116 | 'stmxcsr', |
1117 | 'stosb', |
1118 | 'stosb', |
1119 | 'stosd', |
1120 | 'stosd', |
1121 | 'stosw', |
1122 | 'stosw', |
1123 | 'str', |
1124 | 'str', |
1125 | 'sub', |
1126 | 'sub', |
1127 | 'subpd', |
1128 | 'subpd', |
1129 | 'subps', |
1130 | 'subps', |
1131 | 'subsd', |
1132 | 'subsd', |
1133 | 'subss', |
1134 | 'subss', |
1135 | 'svdc', |
1136 | 'svdc', |
1137 | 'svldt', |
1138 | 'svldt', |
1139 | 'svts', |
1140 | 'svts', |
1141 | 'syscall', |
1142 | 'syscall', |
1143 | 'sysenter', |
1144 | 'sysenter', |
1145 | 'sysexit', |
1146 | 'sysexit', |
1147 | 'sysret', |
1148 | 'sysret', |
1149 | 'test', |
1150 | 'test', |
1151 | 'ucomisd', |
1152 | 'ucomisd', |
1153 | 'ucomiss', |
1154 | 'ucomiss', |
1155 | 'ud0', |
1156 | 'ud0', |
1157 | 'ud1', |
1158 | 'ud1', |
1159 | 'ud2', |
1160 | 'ud2', |
1161 | 'umov', |
1162 | 'umov', |
1163 | 'unpckhpd', |
1164 | 'unpckhpd', |
1165 | 'unpckhps', |
1166 | 'unpckhps', |
1167 | 'unpcklpd', |
1168 | 'unpcklpd', |
1169 | 'unpcklps', |
1170 | 'unpcklps', |
1171 | 'verr', |
1172 | 'verr', |
1173 | 'verw', |
1174 | 'verw', |
1175 | 'wait', |
1176 | 'wait', |
1177 | 'wbinvd', |
1178 | 'wbinvd', |
1179 | 'wrmsr', |
1180 | 'wrmsr', |
1181 | 'wrshr', |
1182 | 'wrshr', |
1183 | 'xadd', |
1184 | 'xadd', |
1185 | 'xbts', |
1186 | 'xbts', |
1187 | 'xchg', |
1188 | 'xchg', |
1189 | 'xlat', |
1190 | 'xlat', |
1191 | 'xlatb', |
1192 | 'xlatb', |
1193 | 'xor', |
1194 | 'xor', |
1195 | 'xorpd', |
1196 | 'xorpd', |
1197 | 'xorps', |
1198 | 'xorps', |
1199 | ); |
1200 | $self->listAdd('registers', |
1201 | 'ah', |
1202 | 'al', |
1203 | 'ax', |
1204 | 'bh', |
1205 | 'bl', |
1206 | 'bp', |
1207 | 'bx', |
1208 | 'ch', |
1209 | 'cl', |
1210 | 'cr0', |
1211 | 'cr1', |
1212 | 'cr2', |
1213 | 'cr3', |
1214 | 'cr4', |
1215 | 'cs', |
1216 | 'cx', |
1217 | 'dh', |
1218 | 'di', |
1219 | 'dl', |
1220 | 'ds', |
1221 | 'dx', |
1222 | 'eax', |
1223 | 'ebp', |
1224 | 'ebx', |
1225 | 'ecx', |
1226 | 'edi', |
1227 | 'edx', |
1228 | 'eip', |
1229 | 'es', |
1230 | 'esi', |
1231 | 'esp', |
1232 | 'fs', |
1233 | 'gs', |
1234 | 'ip', |
1235 | 'mm0', |
1236 | 'mm1', |
1237 | 'mm2', |
1238 | 'mm3', |
1239 | 'mm4', |
1240 | 'mm5', |
1241 | 'mm6', |
1242 | 'mm7', |
1243 | 'si', |
1244 | 'sp', |
1245 | 'ss', |
1246 | 'st', |
1247 | 'xmm0', |
1248 | 'xmm1', |
1249 | 'xmm2', |
1250 | 'xmm3', |
1251 | 'xmm4', |
1252 | 'xmm5', |
1253 | 'xmm6', |
1254 | 'xmm7', |
1255 | ); |
1256 | $self->contextdata({ |
1257 | 'Comment' => { |
1258 | callback => \&parseComment, |
1259 | attribute => 'Comment', |
1260 | lineending => '#pop', |
1261 | }, |
1262 | 'Normal' => { |
1263 | callback => \&parseNormal, |
1264 | attribute => 'Normal Text', |
1265 | }, |
1266 | 'Preprocessor' => { |
1267 | callback => \&parsePreprocessor, |
1268 | attribute => 'Preprocessor', |
1269 | lineending => '#pop', |
1270 | }, |
1271 | 'String' => { |
1272 | callback => \&parseString, |
1273 | attribute => 'String', |
1274 | lineending => '#pop', |
1275 | }, |
1276 | }); |
1277 | $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\'); |
1278 | $self->basecontext('Normal'); |
1279 | $self->keywordscase(0); |
1280 | $self->initialize; |
1281 | bless ($self, $class); |
1282 | return $self; |
1283 | } |
1284 | |
1285 | sub language { |
1286 | return 'Intel x86 (NASM)'; |
1287 | } |
1288 | |
1289 | sub parseComment { |
1290 | my ($self, $text) = @_; |
1291 | return 0; |
1292 | }; |
1293 | |
1294 | sub parseNormal { |
1295 | my ($self, $text) = @_; |
1296 | # String => 'registers' |
1297 | # attribute => 'Registers' |
1298 | # context => '#stay' |
1299 | # type => 'keyword' |
1300 | if ($self->testKeyword($text, 'registers', 0, undef, 0, '#stay', 'Registers')) { |
1301 | return 1 |
1302 | } |
1303 | # String => 'Data' |
1304 | # attribute => 'Data' |
1305 | # context => '#stay' |
1306 | # type => 'keyword' |
1307 | if ($self->testKeyword($text, 'Data', 0, undef, 0, '#stay', 'Data')) { |
1308 | return 1 |
1309 | } |
1310 | # String => 'instructions' |
1311 | # attribute => 'Instructions' |
1312 | # context => '#stay' |
1313 | # type => 'keyword' |
1314 | if ($self->testKeyword($text, 'instructions', 0, undef, 0, '#stay', 'Instructions')) { |
1315 | return 1 |
1316 | } |
1317 | # String => 'NASM Keywords' |
1318 | # attribute => 'NASM Keywords' |
1319 | # context => '#stay' |
1320 | # type => 'keyword' |
1321 | if ($self->testKeyword($text, 'NASM Keywords', 0, undef, 0, '#stay', 'NASM Keywords')) { |
1322 | return 1 |
1323 | } |
1324 | # attribute => 'Comment' |
1325 | # char => ';' |
1326 | # context => 'Comment' |
1327 | # type => 'DetectChar' |
1328 | if ($self->testDetectChar($text, ';', 0, 0, 0, undef, 0, 'Comment', 'Comment')) { |
1329 | return 1 |
1330 | } |
1331 | # attribute => 'Preprocessor' |
1332 | # char => '%' |
1333 | # context => 'Preprocessor' |
1334 | # type => 'DetectChar' |
1335 | if ($self->testDetectChar($text, '%', 0, 0, 0, undef, 0, 'Preprocessor', 'Preprocessor')) { |
1336 | return 1 |
1337 | } |
1338 | # String => '"'' |
1339 | # attribute => 'String' |
1340 | # context => 'String' |
1341 | # type => 'AnyChar' |
1342 | if ($self->testAnyChar($text, '"\'', 0, 0, undef, 0, 'String', 'String')) { |
1343 | return 1 |
1344 | } |
1345 | # String => '^\s*[A-Za-z0-9_.$]+:' |
1346 | # attribute => 'Label' |
1347 | # context => '#stay' |
1348 | # type => 'RegExpr' |
1349 | if ($self->testRegExpr($text, '^\\s*[A-Za-z0-9_.$]+:', 0, 0, 0, undef, 0, '#stay', 'Label')) { |
1350 | return 1 |
1351 | } |
1352 | # String => '(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)' |
1353 | # attribute => 'Instructions' |
1354 | # context => '#stay' |
1355 | # type => 'RegExpr' |
1356 | if ($self->testRegExpr($text, '(cmov|fcmov|j|loop|set)(a|ae|b|be|c|e|g|ge|l|le|na|nae|nb|nbe|nc|ne|ng|nge|nl|nle|no|np|ns|nz|o|p|pe|po|s|z)', 0, 0, 0, undef, 0, '#stay', 'Instructions')) { |
1357 | return 1 |
1358 | } |
1359 | # String => 'cpu (pentium|ppro|p2|p3|katmai|p4|willamette|prescott|ia64)*' |
1360 | # attribute => 'NASM Keywords' |
1361 | # context => '#stay' |
1362 | # type => 'RegExpr' |
1363 | if ($self->testRegExpr($text, 'cpu (pentium|ppro|p2|p3|katmai|p4|willamette|prescott|ia64)*', 0, 0, 0, undef, 0, '#stay', 'NASM Keywords')) { |
1364 | return 1 |
1365 | } |
1366 | # String => '(\$[0-9]+[a-f0-9]*|[a-f0-9]+h)' |
1367 | # attribute => 'BaseN' |
1368 | # context => '#stay' |
1369 | # insensitive => 'TRUE' |
1370 | # type => 'RegExpr' |
1371 | if ($self->testRegExpr($text, '(\\$[0-9]+[a-f0-9]*|[a-f0-9]+h)', 1, 0, 0, undef, 0, '#stay', 'BaseN')) { |
1372 | return 1 |
1373 | } |
1374 | # String => '([0-7]+(q|o)|[01]+b)' |
1375 | # attribute => 'BaseN' |
1376 | # context => '#stay' |
1377 | # insensitive => 'TRUE' |
1378 | # type => 'RegExpr' |
1379 | if ($self->testRegExpr($text, '([0-7]+(q|o)|[01]+b)', 1, 0, 0, undef, 0, '#stay', 'BaseN')) { |
1380 | return 1 |
1381 | } |
1382 | # attribute => 'Number' |
1383 | # char => '$' |
1384 | # context => '#stay' |
1385 | # type => 'DetectChar' |
1386 | if ($self->testDetectChar($text, '$', 0, 0, 0, undef, 0, '#stay', 'Number')) { |
1387 | return 1 |
1388 | } |
1389 | # attribute => 'BaseN' |
1390 | # context => '#stay' |
1391 | # type => 'HlCOct' |
1392 | if ($self->testHlCOct($text, 0, undef, 0, '#stay', 'BaseN')) { |
1393 | return 1 |
1394 | } |
1395 | # attribute => 'BaseN' |
1396 | # context => '#stay' |
1397 | # type => 'HlCHex' |
1398 | if ($self->testHlCHex($text, 0, undef, 0, '#stay', 'BaseN')) { |
1399 | return 1 |
1400 | } |
1401 | # attribute => 'Float' |
1402 | # context => '#stay' |
1403 | # type => 'Float' |
1404 | if ($self->testFloat($text, 0, undef, 0, '#stay', 'Float')) { |
1405 | return 1 |
1406 | } |
1407 | # attribute => 'Number' |
1408 | # context => '#stay' |
1409 | # type => 'Int' |
1410 | if ($self->testInt($text, 0, undef, 0, '#stay', 'Number')) { |
1411 | return 1 |
1412 | } |
1413 | # attribute => 'Char' |
1414 | # context => '#stay' |
1415 | # type => 'HlCChar' |
1416 | if ($self->testHlCChar($text, 0, undef, 0, '#stay', 'Char')) { |
1417 | return 1 |
1418 | } |
1419 | return 0; |
1420 | }; |
1421 | |
1422 | sub parsePreprocessor { |
1423 | my ($self, $text) = @_; |
1424 | return 0; |
1425 | }; |
1426 | |
1427 | sub parseString { |
1428 | my ($self, $text) = @_; |
1429 | # String => '"'' |
1430 | # attribute => 'String' |
1431 | # context => '#pop' |
1432 | # type => 'AnyChar' |
1433 | if ($self->testAnyChar($text, '"\'', 0, 0, undef, 0, '#pop', 'String')) { |
1434 | return 1 |
1435 | } |
1436 | return 0; |
1437 | }; |
1438 | |
1439 | |
1440 | 1; |
1441 | |
1442 | __END__ |
1443 | |
1444 | =head1 NAME |
1445 | |
1446 | Syntax::Highlight::Engine::Kate::Intel_x86_NASM - a Plugin for Intel x86 (NASM) syntax highlighting |
1447 | |
1448 | =head1 SYNOPSIS |
1449 | |
1450 | require Syntax::Highlight::Engine::Kate::Intel_x86_NASM; |
1451 | my $sh = new Syntax::Highlight::Engine::Kate::Intel_x86_NASM([ |
1452 | ]); |
1453 | |
1454 | =head1 DESCRIPTION |
1455 | |
1456 | Syntax::Highlight::Engine::Kate::Intel_x86_NASM is a plugin module that provides syntax highlighting |
1457 | for Intel x86 (NASM) to the Syntax::Haghlight::Engine::Kate highlighting engine. |
1458 | |
1459 | This code is generated from the syntax definition files used |
1460 | by the Kate project. |
1461 | It works quite fine, but can use refinement and optimization. |
1462 | |
1463 | It inherits Syntax::Higlight::Engine::Kate::Template. See also there. |
1464 | |
1465 | =cut |
1466 | |
1467 | =head1 AUTHOR |
1468 | |
1469 | Hans Jeuken (haje <at> toneel <dot> demon <dot> nl) |
1470 | |
1471 | =cut |
1472 | |
1473 | =head1 BUGS |
1474 | |
1475 | Unknown. If you find any, please contact the author |
1476 | |
1477 | =cut |
1478 | |