File Coverage

blib/lib/Syntax/Highlight/Engine/Kate/Intel_x86_NASM.pm
Criterion Covered Total %
statement 60 71 84.5
branch 30 38 78.9
condition 1 3 33.3
subroutine 7 9 77.7
pod 0 6 0.0
total 98 127 77.1


line stmt bran cond sub pod time code
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.14';
16              
17 1     1   581 use strict;
  1         2  
  1         27  
18 1     1   4 use warnings;
  1         3  
  1         25  
19 1     1   28 use base('Syntax::Highlight::Engine::Kate::Template');
  1         2  
  1         1830  
20              
21             sub new {
22 2     2 0 594 my $proto = shift;
23 2   33     10 my $class = ref($proto) || $proto;
24 2         10 my $self = $class->SUPER::new(@_);
25 2         20 $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 2         10 $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 2         7 $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 2         33 $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 2         9 $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 2         26 $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 2         9 $self->deliminators('\\s||\\.|\\(|\\)|:|\\!|\\+|,|-|<|=|>|\\%|\\&|\\*|\\/|;|\\?|\\[|\\]|\\^|\\{|\\||\\}|\\~|\\\\');
1278 2         7 $self->basecontext('Normal');
1279 2         7 $self->keywordscase(0);
1280 2         6 $self->initialize;
1281 2         4 bless ($self, $class);
1282 2         15 return $self;
1283             }
1284              
1285             sub language {
1286 0     0 0 0 return 'Intel x86 (NASM)';
1287             }
1288              
1289             sub parseComment {
1290 354     354 0 565 my ($self, $text) = @_;
1291 354         565 return 0;
1292             };
1293              
1294             sub parseNormal {
1295 248     248 0 425 my ($self, $text) = @_;
1296             # String => 'registers'
1297             # attribute => 'Registers'
1298             # context => '#stay'
1299             # type => 'keyword'
1300 248 100       631 if ($self->testKeyword($text, 'registers', 0, undef, 0, '#stay', 'Registers')) {
1301 8         21 return 1
1302             }
1303             # String => 'Data'
1304             # attribute => 'Data'
1305             # context => '#stay'
1306             # type => 'keyword'
1307 240 100       519 if ($self->testKeyword($text, 'Data', 0, undef, 0, '#stay', 'Data')) {
1308 4         11 return 1
1309             }
1310             # String => 'instructions'
1311             # attribute => 'Instructions'
1312             # context => '#stay'
1313             # type => 'keyword'
1314 236 100       537 if ($self->testKeyword($text, 'instructions', 0, undef, 0, '#stay', 'Instructions')) {
1315 16         46 return 1
1316             }
1317             # String => 'NASM Keywords'
1318             # attribute => 'NASM Keywords'
1319             # context => '#stay'
1320             # type => 'keyword'
1321 220 100       491 if ($self->testKeyword($text, 'NASM Keywords', 0, undef, 0, '#stay', 'NASM Keywords')) {
1322 8         19 return 1
1323             }
1324             # attribute => 'Comment'
1325             # char => ';'
1326             # context => 'Comment'
1327             # type => 'DetectChar'
1328 212 100       511 if ($self->testDetectChar($text, ';', 0, 0, 0, undef, 0, 'Comment', 'Comment')) {
1329 10         21 return 1
1330             }
1331             # attribute => 'Preprocessor'
1332             # char => '%'
1333             # context => 'Preprocessor'
1334             # type => 'DetectChar'
1335 202 50       415 if ($self->testDetectChar($text, '%', 0, 0, 0, undef, 0, 'Preprocessor', 'Preprocessor')) {
1336 0         0 return 1
1337             }
1338             # String => '"''
1339             # attribute => 'String'
1340             # context => 'String'
1341             # type => 'AnyChar'
1342 202 100       450 if ($self->testAnyChar($text, '"\'', 0, 0, undef, 0, 'String', 'String')) {
1343 4         11 return 1
1344             }
1345             # String => '^\s*[A-Za-z0-9_.$]+:'
1346             # attribute => 'Label'
1347             # context => '#stay'
1348             # type => 'RegExpr'
1349 198 100       453 if ($self->testRegExpr($text, '^\\s*[A-Za-z0-9_.$]+:', 0, 0, 0, undef, 0, '#stay', 'Label')) {
1350 2         7 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 196 50       514 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 0         0 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 196 50       535 if ($self->testRegExpr($text, 'cpu (pentium|ppro|p2|p3|katmai|p4|willamette|prescott|ia64)*', 0, 0, 0, undef, 0, '#stay', 'NASM Keywords')) {
1364 0         0 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 196 100       522 if ($self->testRegExpr($text, '(\\$[0-9]+[a-f0-9]*|[a-f0-9]+h)', 1, 0, 0, undef, 0, '#stay', 'BaseN')) {
1372 2         5 return 1
1373             }
1374             # String => '([0-7]+(q|o)|[01]+b)'
1375             # attribute => 'BaseN'
1376             # context => '#stay'
1377             # insensitive => 'TRUE'
1378             # type => 'RegExpr'
1379 194 100       523 if ($self->testRegExpr($text, '([0-7]+(q|o)|[01]+b)', 1, 0, 0, undef, 0, '#stay', 'BaseN')) {
1380 4         13 return 1
1381             }
1382             # attribute => 'Number'
1383             # char => '$'
1384             # context => '#stay'
1385             # type => 'DetectChar'
1386 190 50       501 if ($self->testDetectChar($text, '$', 0, 0, 0, undef, 0, '#stay', 'Number')) {
1387 0         0 return 1
1388             }
1389             # attribute => 'BaseN'
1390             # context => '#stay'
1391             # type => 'HlCOct'
1392 190 50       514 if ($self->testHlCOct($text, 0, undef, 0, '#stay', 'BaseN')) {
1393 0         0 return 1
1394             }
1395             # attribute => 'BaseN'
1396             # context => '#stay'
1397             # type => 'HlCHex'
1398 190 100       441 if ($self->testHlCHex($text, 0, undef, 0, '#stay', 'BaseN')) {
1399 2         5 return 1
1400             }
1401             # attribute => 'Float'
1402             # context => '#stay'
1403             # type => 'Float'
1404 188 50       447 if ($self->testFloat($text, 0, undef, 0, '#stay', 'Float')) {
1405 0         0 return 1
1406             }
1407             # attribute => 'Number'
1408             # context => '#stay'
1409             # type => 'Int'
1410 188 50       457 if ($self->testInt($text, 0, undef, 0, '#stay', 'Number')) {
1411 0         0 return 1
1412             }
1413             # attribute => 'Char'
1414             # context => '#stay'
1415             # type => 'HlCChar'
1416 188 50       430 if ($self->testHlCChar($text, 0, undef, 0, '#stay', 'Char')) {
1417 0         0 return 1
1418             }
1419 188         363 return 0;
1420             };
1421              
1422             sub parsePreprocessor {
1423 0     0 0 0 my ($self, $text) = @_;
1424 0         0 return 0;
1425             };
1426              
1427             sub parseString {
1428 30     30 0 51 my ($self, $text) = @_;
1429             # String => '"''
1430             # attribute => 'String'
1431             # context => '#pop'
1432             # type => 'AnyChar'
1433 30 100       67 if ($self->testAnyChar($text, '"\'', 0, 0, undef, 0, '#pop', 'String')) {
1434 4         9 return 1
1435             }
1436 26         45 return 0;
1437             };
1438              
1439              
1440             1;
1441              
1442             __END__