From 4a5ef999fab1cb257980bc7b00364c69b0ecdf57 Mon Sep 17 00:00:00 2001 From: winsdominoes Date: Tue, 11 Jun 2024 09:15:26 +0700 Subject: [PATCH] added asm yaml --- .config/micro/syntax/asm.yaml | 170 ++++++++++++++++++++++++++++++++++ 1 file changed, 170 insertions(+) create mode 100644 .config/micro/syntax/asm.yaml diff --git a/.config/micro/syntax/asm.yaml b/.config/micro/syntax/asm.yaml new file mode 100644 index 0000000..a7393ad --- /dev/null +++ b/.config/micro/syntax/asm.yaml @@ -0,0 +1,170 @@ +filetype: asm + +detect: + filename: "\\.(S|s|asm|inc|nasm)$" + +rules: + # This file is made for NASM Assembler # + + ## Instructions + # Core + - statement: "\\b(?i)(aaa|aad|aam|aas|adc|adcx|add|addpd|addps|addsd|addss|addsubpd|addsubps|adox|aesdec|aesdec128kl|aesdec256kl|aesdeclast|aesdecwide128kl|aesdecwide256kl|aesenc|aesenc128kl)(?-i)\\b" + - statement: "\\b(?i)(aesenc256kl|aesenclast|aesencwide128kl|aesencwide256kl|aesimc|aeskeygenassist|and|andn|andnpd|andnps|andpd|andps|arpl|bextr|blendpd|blendps|blendvpd|blendvps|blsi|blsmsk)(?-i)\\b" + - statement: "\\b(?i)(blsr|bndcl|bndcn|bndcu|bndldx|bndmk|bndmov|bndstx|bound|bsf|bsr|bswap|bt|btc|btr|bts|bzhi|call|cbw|cdq|cdqe|clac|clc|cld|cldemote|clflush|clflushopt|cli|clrssbsy|clts)(?-i)\\b" + - statement: "\\b(?i)(clui|clwb|cmc|cmova|cmovae|cmovb|cmovbe|cmovc|cmove|cmovg|cmovge|cmovl|cmovle|cmovna|cmovnae|cmovnb|cmovnbe|cmovnc|cmovne|cmovng|cmovnge|cmovnl|cmovnle|cmovno|cmovnp|cmovns|cmovnz|cmovo|cmovp|cmovpe|cmovpo|cmovs|cmovz|cmp|cmppd|cmpps|cmps|cmpsb|cmpsd|cmpsq|cmpss|cmpsw|cmpxchg|cmpxchg16b|cmpxchg8b|comisd|comiss|cpuid|cqo|crc32|cvtdq2pd|cvtdq2ps|cvtpd2dq)(?-i)\\b" + - statement: "\\b(?i)(cvtpd2pi|cvtpd2ps|cvtpi2pd|cvtpi2ps|cvtps2dq|cvtps2pd|cvtps2pi|cvtsd2si|cvtsd2ss|cvtsi2sd|cvtsi2ss|cvtss2sd|cvtss2si|cvttpd2dq|cvttpd2pi|cvttps2dq|cvttps2pi|cvttsd2si)(?-i)\\b" + - statement: "\\b(?i)(cvttss2si|cwd|cwde|daa|das|dec|div|divpd|divps|divsd|divss|dppd|dpps|emms|encodekey128|encodekey256|endbr32|endbr64|enqcmd|enqcmds|enter|extractps|f2xm1|fabs|fadd|faddp)(?-i)\\b" + - statement: "\\b(?i)(fbld|fbstp|fchs|fclex|fcmovb|fcmove|fcmovbe|fcmovu|fcmovnb|fcmovne|fcmovnbe|fcmovnu|fcom|fcomi|fcomip|fcomp|fcompp|fcos|fdecstp|fdiv|fdivp|fdivr|fdivrp|ffree|fiadd|ficom|ficomp)(?-i)\\b" + - statement: "\\b(?i)(fidiv|fidivr|fild|fimul|fincstp|finit|fist|fistp|fisttp|fisub|fisubr|fld|fld1|fldcw|fldenv|fldl2e|fldl2t|fldlg2|fldln2|fldpi|fldz|fmul|fmulp|fnclex|fninit|fnop|fnsave|fnstcw)(?-i)\\b" + - statement: "\\b(?i)(fnstenv|fnstsw|fpatan|fprem|fprem1fptan|frndint|frstor|fsave|fscale|fsin|fsincos|fsqrt|fst|fstcw|fstenv|fstp|fstsw|fsub|fsubp|fsubr|fsubrp|ftst|fucom|fucomi|fucomip|fucomp|fucompp)(?-i)\\b" + - statement: "\\b(?i)(fwait|fxam|fxch|fxrstor|fxsave|fxtract|fyl2x|fyl2xp1|gf2p8affineinvqb|gf2p8affineqb|gf2p8mulb|haddpd|haddps|hlt|hreset|hsubpd|hsubps|idiv|imul|in|inc|incsspd|incsspq|ins|insb|insd)(?-i)\\b" + - statement: "\\b(?i)(insertps|insw|int|int1|int3|into|invd|invlpg|invpcid|iret|iretd|iretq|jmp|ja|jae|jb|jbe|jc|jcxz|jecxz|jrcxz|je|jg|jge|jl|jle|jna|jnae|jnb|jnbe|jnc|jne|jng|jnge|jnl|jnle|jno|jnp|jns|jnz|jo|jp|jpe|jpo|js|jz|kaddb|kaddd|kaddq|kaddw|kandb|kandd|kandnb|kandnd|kandnq|kandnw|kandq|kandw|kmovb|kmovd|kmovq)(?-i)\\b" + - statement: "\\b(?i)(kmovw|knotb|knotd|knotq|knotw|korb|kord|korq|kortestb|kortestd|kortestq|kortestw|korw|kshiftlb|kshiftld|kshiftlq|kshiftlw|kshiftrb|kshiftrd|kshiftrq|kshiftrw|ktestb|ktestd)(?-i)\\b" + - statement: "\\b(?i)(ktestq|ktestw|kunpckbw|kunpckdq|kunpckwd|kxnorb|kxnord|kxnorq|kxnorw|kxorb|kxord|kxorq|kxorw|lahf|lar|lddqu|ldmxcsr|lds|ldtilecfg|lea|leave|les|lfence|lfs|lgdt|lgs|lidt|lldt)(?-i)\\b" + - statement: "\\b(?i)(lmsw|loadiwkey|lock|lods|lodsb|lodsd|lodsq|lodsw|loop|loope|loopne|lsl|lss|ltr|lzcnt|maskmovdqu|maskmovq|maxpd|maxps|maxsd|maxss|mfence|minpd|minps|minsd|minss|monitor)(?-i)\\b" + - statement: "\\b(?i)(mov|movapd|movaps|movbe|movd|movddup|movdir64b|movdiri|movdq2q|movdqa|movdqu|movhlps|movhpd|movhps|movlhps|movlpd|movlps|movmskpd|movmskps|movntdq|movntdqa|movnti)(?-i)\\b" + - statement: "\\b(?i)(movntpd|movntps|movntq|movq|movq2dq|movs|movsb|movsd|movshdup|movsldup|movsq|movss|movsw|movsx|movsxd|movupd|movups|movzx|mpsadbw|mul|mulpd|mulps|mulsd|mulss)(?-i)\\b" + - statement: "\\b(?i)(mulx|mwait|neg|nop|not|or|orpd|orps|out|outs|outsb|outsd|outsw|pabsb|pabsd|pabsq|pabsw|packssdw|packsswb|packusdw|packuswb|paddb|paddd|paddq|paddsb|paddsw|paddusb)(?-i)\\b" + - statement: "\\b(?i)(paddusw|paddw|palignr|pand|pandn|pause|pavgb|pavgw|pblendvb|pblendw|pclmulqdq|pcmpeqb|pcmpeqd|pcmpeqq|pcmpeqw|pcmpestri|pcmpestrm|pcmpgtb|pcmpgtd|pcmpgtq|pcmpgtw)(?-i)\\b" + - statement: "\\b(?i)(pcmpistri|pcmpistrm|pconfig|pdep|pext|pextrb|pextrd|pextrq|pextrw|phaddd|phaddsw|phaddw|phminposuw|phsubd|phsubsw|phsubw|pinsrb|pinsrd|pinsrq|pinsrw|pmaddubsw|pmaddwd)(?-i)\\b" + - statement: "\\b(?i)(pmaxsb|pmaxsd|pmaxsq|pmaxsw|pmaxub|pmaxud|pmaxuq|pmaxuw|pminsb|pminsd|pminsq|pminsw|pminub|pminud|pminuq|pminuw|pmovmskb|pmovsx|pmovzx|pmuldq|pmulhrsw|pmulhuw|pmulhw)(?-i)\\b" + - statement: "\\b(?i)(pmulld|pmullq|pmullw|pmuludq|pop|popa|popad|popcnt|popf|popfd|popfq|por|prefetchw|prefetchh|psadbw|pshufb|pshufd|pshufhw|pshuflw|pshufw|psignb|psignd|psignw|pslld|pslldq)(?-i)\\b" + - statement: "\\b(?i)(psllq|psllw|psrad|psraq|psraw|psrld|psrldq|psrlq|psrlw|psubb|psubd|psubq|psubsb|psubsw|psubusb|psubusw|psubw|ptest|ptwrite|punpckhbw|punpckhdq|punpckhqdq|punpckhwd)(?-i)\\b" + - statement: "\\b(?i)(punpcklbw|punpckldq|punpcklqdq|punpcklwd|push|pusha|pushad|pushf|pushfd|pushfq|pxor|rcl|rcpps|rcpss|rcr|rdfsbase|rdgsbase|rdmsr|rdpid|rdpkru|rdpmc|rdrand|rdseed|rdsspd)(?-i)\\b" + - statement: "\\b(?i)(rdsspq|rdtsc|rdtscp|rep|repe|repne|repnz|repz|ret|rol|ror|rorx|roundpd|roundps|roundsd|roundss|rsm|rsqrtps|rsqrtss|rstorssp|sahf|sal|sar|sarx|saveprevssp|sbb|scas|scasb)(?-i)\\b" + - statement: "\\b(?i)(scasd|scasw|senduipi|serialize|setssbsy|seta|setae|setb|setbe|setc|sete|setg|setge|setl|setle|setna|setnae|setnb|setnbe|setnc|setne|setng|setnge|setnl|setnle|setno|setnp|setns|setnz|seto|setp|setpe|setpo|sets|setz|sfence|sgdt|sha1msg1|sha1msg2|sha1nexte|sha1rnds4|sha256msg1|sha256msg2|sha256rnds2|shl|shld|shlx|shr|shrd|shrx|shufpd)(?-i)\\b" + - statement: "\\b(?i)(shufps|sidt|sldt|smsw|sqrtpd|sqrtps|sqrtsd|sqrtss|stac|stc|std|sti|stmxcsr|stos|stosb|stosd|stosq|stosw|str|sttilecfg|stui|sub|subpd|subps|subsd|subss|swapgs|syscall)(?-i)\\b" + - statement: "\\b(?i)(sysenter|sysexit|sysret|tdpbf16ps|tdpbssd|tdpbsud|tdpbusd|tdpbuud|test|testui|tileloadd|tileloaddt1|tilerelease|tilestored|tilezero|tpause|tzcnt|ucomisd|ucomiss|ud|uiret)(?-i)\\b" + - statement: "\\b(?i)(umonitor|umwait|unpckhpd|unpckhps|unpcklpd|unpcklps|vaddph|vaddsh|valignd|valignq|vblendmpd|vblendmps|vbroadcast|vcmpph|vcmpsh|vcomish|vcompresspd|vcompressps|vcompressw)(?-i)\\b" + - statement: "\\b(?i)(vcvtdq2ph|vcvtne2ps2bf16|vcvtneps2bf16|vcvtpd2ph|vcvtpd2qq|vcvtpd2udq|vcvtpd2uqq|vcvtph2dq|vcvtph2pd|vcvtph2ps|vcvtph2psx|vcvtph2qq|vcvtph2udq|vcvtph2uqq|vcvtph2uw)(?-i)\\b" + - statement: "\\b(?i)(vcvtph2w|vcvtps2ph|vcvtps2phx|vcvtps2qq|vcvtps2udq|vcvtps2uqq|vcvtqq2pd|vcvtqq2ph|vcvtqq2ps|vcvtsd2sh|vcvtsd2usi|vcvtsh2sd|vcvtsh2si|vcvtsh2ss|vcvtsh2usi|vcvtsi2sh)(?-i)\\b" + - statement: "\\b(?i)(vcvtss2sh|vcvtss2usi|vcvttpd2qq|vcvttpd2udq|vcvttpd2uqq|vcvttph2dq|vcvttph2qq|vcvttph2udq|vcvttph2uqq|vcvttph2uw|vcvttph2w|vcvttps2qq|vcvttps2udq|vcvttps2uqq|vcvttsd2usi)(?-i)\\b" + - statement: "\\b(?i)(vcvttsh2si|vcvttsh2usi|vcvttss2usi|vcvtudq2pd|vcvtudq2ph|vcvtudq2ps|vcvtuqq2pd|vcvtuqq2ph|vcvtuqq2ps|vcvtusi2sd|vcvtusi2sh|vcvtusi2ss|vcvtuw2ph|vcvtw2ph|vdbpsadbw|vdivph)(?-i)\\b" + - statement: "\\b(?i)(vdivsh|vdpbf16ps|verr|verw|vexpandpd|vexpandps|vextractf128|vextractf32x4|vextractf32x8|vextractf64x2|vextractf64x4|vextracti128|vextracti32x4|vextracti32x8)(?-i)\\b" + - statement: "\\b(?i)(vextracti64x2|vextracti64x4|vfcmaddcph|vfcmaddcsh|vfcmulcph|vfcmulcsh|vfixupimmpd|vfixupimmps|vfixupimmsd|vfixupimmss|vfmadd132pd|vfmadd132ph|vfmadd132ps|vfmadd132sd)(?-i)\\b" + - statement: "\\b(?i)(vfmadd132sh|vfmadd132ss|vfmadd213pd|vfmadd213ph|vfmadd213ps|vfmadd213sd|vfmadd213sh|vfmadd213ss|vfmadd231pd|vfmadd231ph|vfmadd231ps|vfmadd231sd|vfmadd231sh|vfmadd231ss)(?-i)\\b" + - statement: "\\b(?i)(vfmaddcph|vfmaddcsh|vfmaddsub132pd|vfmaddsub132ph|vfmaddsub132ps|vfmaddsub213pd|vfmaddsub213ph|vfmaddsub213ps|vfmaddsub231pd|vfmaddsub231ph|vfmaddsub231ps|vfmsub132pd)(?-i)\\b" + - statement: "\\b(?i)(vfmsub132ph|vfmsub132ps|vfmsub132sd|vfmsub132sh|vfmsub132ss|vfmsub213pd|vfmsub213ph|vfmsub213ps|vfmsub213sd|vfmsub213sh|vfmsub213ss|vfmsub231pd|vfmsub231ph|vfmsub231ps)(?-i)\\b" + - statement: "\\b(?i)(vfmsub231sd|vfmsub231sh|vfmsub231ss|vfmsubadd132pd|vfmsubadd132ph|vfmsubadd132ps|vfmsubadd213pd|vfmsubadd213ph|vfmsubadd213ps|vfmsubadd231pd|vfmsubadd231ph)(?-i)\\b" + - statement: "\\b(?i)(vfmsubadd231ps|vfmulcph|vfmulcsh|vfnmadd132pd|vfnmadd132ph|vfnmadd132ps|vfnmadd132sd|vfnmadd132sh|vfnmadd132ss|vfnmadd213pd|vfnmadd213ph|vfnmadd213ps|vfnmadd213sd)(?-i)\\b" + - statement: "\\b(?i)(vfnmadd213sh|vfnmadd213ss|vfnmadd231pd|vfnmadd231ph|vfnmadd231ps|vfnmadd231sd|vfnmadd231sh|vfnmadd231ss|vfnmsub132pd|vfnmsub132ph|vfnmsub132ps|vfnmsub132sd|vfnmsub132sh)(?-i)\\b" + - statement: "\\b(?i)(vfnmsub132ss|vfnmsub213pd|vfnmsub213ph|vfnmsub213ps|vfnmsub213sd|vfnmsub213sh|vfnmsub213ss|vfnmsub231pd|vfnmsub231ph|vfnmsub231ps|vfnmsub231sd|vfnmsub231sh|vfnmsub231ss)(?-i)\\b" + - statement: "\\b(?i)(vfpclasspd|vfpclassph|vfpclassps|vfpclasssd|vfpclasssh|vfpclassss|vgatherdpd|vgatherdps|vgatherqpd|vgatherqps|vgetexppd)(?-i)\\b" + - statement: "\\b(?i)(vgetexpph|vgetexpps|vgetexpsd|vgetexpsh|vgetexpss|vgetmantpd|vgetmantph|vgetmantps|vgetmantsd|vgetmantsh|vgetmantss|vinsertf128|vinsertf32x4|vinsertf32x8|vinsertf64x2)(?-i)\\b" + - statement: "\\b(?i)(vinsertf64x4|vinserti128|vinserti32x4|vinserti32x8|vinserti64x2|vinserti64x4|vmaskmov|vmaxph|vmaxsh|vminph|vminsh|vmovdqa32|vmovdqa64|vmovdqu16|vmovdqu32|vmovdqu64)(?-i)\\b" + - statement: "\\b(?i)(vmovdqu8|vmovsh|vmovw|vmulph|vmulsh|vp2intersectd|vp2intersectq|vpblendd|vpblendmb|vpblendmd|vpblendmq|vpblendmw|vpbroadcast|vpbroadcastb|vpbroadcastd|vpbroadcastm)(?-i)\\b" + - statement: "\\b(?i)(vpbroadcastq|vpbroadcastw|vpcmpb|vpcmpd|vpcmpq|vpcmpub|vpcmpud|vpcmpuq|vpcmpuw|vpcmpw|vpcompressb|vpcompressd|vpcompressq|vpconflictd|vpconflictq|vpdpbusd|vpdpbusds)(?-i)\\b" + - statement: "\\b(?i)(vpdpwssd|vpdpwssds|vperm2f128|vperm2i128|vpermb|vpermd|vpermi2b|vpermi2d|vpermi2pd|vpermi2ps|vpermi2q|vpermi2w|vpermilpd|vpermilps|vpermpd|vpermps|vpermq|vpermt2b)(?-i)\\b" + - statement: "\\b(?i)(vpermt2d|vpermt2pd|vpermt2ps|vpermt2q|vpermt2w|vpermw|vpexpandb|vpexpandd|vpexpandq|vpexpandw|vpgatherdd|vpgatherdq|vpgatherqd)(?-i)\\b" + - statement: "\\b(?i)(vpgatherqq|vplzcntd|vplzcntq|vpmadd52huq|vpmadd52luq|vpmaskmov|vpmovb2m|vpmovd2m|vpmovdb|vpmovdw|vpmovm2b|vpmovm2d|vpmovm2q|vpmovm2w|vpmovq2m|vpmovqb|vpmovqd)(?-i)\\b" + - statement: "\\b(?i)(vpmovqw|vpmovsdb|vpmovsdw|vpmovsqb|vpmovsqd|vpmovsqw|vpmovswb|vpmovusdb|vpmovusdw|vpmovusqb|vpmovusqd|vpmovusqw|vpmovuswb|vpmovw2m|vpmovwb|vpmultishiftqb|vpopcnt|vprold)(?-i)\\b" + - statement: "\\b(?i)(vprolq|vprolvd|vprolvq|vprord|vprorq|vprorvd|vprorvq|vpscatterdd|vpscatterdq|vpscatterqd|vpscatterqq|vpshld|vpshldv|vpshrd|vpshrdv|vpshufbitqmb|vpsllvd|vpsllvq|vpsllvw)(?-i)\\b" + - statement: "\\b(?i)(vpsravd|vpsravq|vpsravw|vpsrlvd|vpsrlvq|vpsrlvw|vpternlogd|vpternlogq|vptestmb|vptestmd|vptestmq|vptestmw|vptestnmb|vptestnmd|vptestnmq|vptestnmw|vrangepd|vrangeps)(?-i)\\b" + - statement: "\\b(?i)(vrangesd|vrangess|vrcp14pd|vrcp14ps|vrcp14sd|vrcp14ss|vrcpph|vrcpsh|vreducepd|vreduceph|vreduceps|vreducesd|vreducesh|vreducess|vrndscalepd|vrndscaleph|vrndscaleps)(?-i)\\b" + - statement: "\\b(?i)(vrndscalesd|vrndscalesh|vrndscaless|vrsqrt14pd|vrsqrt14ps|vrsqrt14sd|vrsqrt14ss|vrsqrtph|vrsqrtsh|vscalefpd|vscalefph|vscalefps|vscalefsd|vscalefsh|vscalefss|vscatterdpd)(?-i)\\b" + - statement: "\\b(?i)(vscatterdps|vscatterqpd|vscatterqps|vshuff32x4|vshuff64x2|vshufi32x4|vshufi64x2|vsqrtph|vsqrtsh|vsubph|vsubsh|vtestpd|vtestps|vucomish|vzeroall|vzeroupper|wait|wbinvd)(?-i)\\b" + - statement: "\\b(?i)(wbnoinvd|wrfsbase|wrgsbase|wrmsr|wrpkru|wrssd|wrssq|wrussd|wrussq|xabort|xacquire|xadd|xbegin|xchg|xend|xgetbv|xlat|xlatb|xor|xorpd|xorps|xrelease|xresldtrk|xrstor)(?-i)\\b" + - statement: "\\b(?i)(xrstors|xsave|xsavec|xsaveopt|xsaves|xsetbv|xsusldtrk|xtest)(?-i)\\b" + + # SGX + - statement: "\\b(?i)(encls|enclu|enclv)(?-i)\\b" + + # SMX + - statement: "\\b(?i)(getsec)(?-i)\\b" + + # VMX + - statement: "\\b(?i)(invept|invvpid|vmcall|vmclear|vmfunc|vmlaunch|vmptrld|vmptrst|vmread|vmresume|vmwrite|vmxoff|vmxon)(?-i)\\b" + + # Xeon Phi + - statement: "\\b(?i)(prefetchwt1|v4fmaddps|v4fmaddss|v4fnmaddps|v4fnmaddss|vexp2pd|vexp2ps|vgatherpf0dpd|vgatherpf0dps|vgatherpf0qpd|vgatherpf0qps)(?-i)\\b" + - statement: "\\b(?i)(vgatherpf1dpd|vgatherpf1dps|vgatherpf1qpd|vgatherpf1qps|vp4dpwssd|vp4dpwssds|vrcp28pd|vrcp28ps|vrcp28sd|vrcp28ss|vrsqrt28pd|vrsqrt28ps)(?-i)\\b" + - statement: "\\b(?i)(vrsqrt28sd|vrsqrt28ss|vscatterpf0dpd|vscatterpf0dps|vscatterpf0qpd|vscatterpf0qps|vscatterpf1dpd|vscatterpf1dps|vscatterpf1qpd|vscatterpf1qps)(?-i)\\b" + + ## Registers + - identifier: "\\b(?i)(cs|ds|ss|es|fs|gs|st)(?-i)\\b" + - identifier: "\\b(?i)(a|b|c|d)(l|h)(?-i)\\b" + - identifier: "\\b(?i)(r|e|)(ax|bx|cx|dx|si|di|sp|bp)(?-i)\\b" + - identifier: "\\b(?i)r([0-9]|1[0-5])(|d|w|b)(?-i)\\b" + - identifier: "\\b(?i)cr([0-9]|1[0-5])(?-i)\\b" + - identifier: "\\b(?i)db[0-7](?-i)\\b" + - identifier: "\\b(?i)tr[0-7](?-i)\\b" + - identifier: "\\b(?i)st[0-7](?-i)\\b" + - identifier: "\\b(?i)mm[0-7](?-i)\\b" + - identifier: "\\b(?i)(x|y|z)mm([0-9]|[1-2][0-9]|3[0-1])(?-i)\\b" + + ## Macros + - preproc: "(?-i)(^|$|[ \t]|)+\\b(__)\\?(NASM_MAJOR|NASM_MINOR|NASM_SUBMINOR|NASM_PATCHLEVEL|NASM_SNAPSHOT|NASM_VERSION_ID|NASM_VER|FILE|LINE|BITS|OUTPUT_FORMAT|DEBUG_FORMAT|DATE|TIME|DATE_NUM|TIME_NUM|UTC_DATE|UTC_TIME|UTC_DATE_NUM|UTC_TIME_NUM|POSIX_TIME|PASS|SECT)\\?(__)+\\b(^|$|[ \t]|)" + - preproc: "(?-i)(^|$|[ \t]|)+\\b(__)\\?(Infinity|QNaN|SNaN|float8|float16|bfloat16|float32|float64|float80m|float80e|float128l|float128h)\\?(__)+\\b(^|$|[ \t]|)" + - preproc: "(?-i)(^|$|[ \t]|)+\\b(__)\\?(utf16|utf16le|utf16be|utf32|utf32le|utf32be)\\?(__)+\\b(^|$|[ \t]|)" + + ## Preprocessor + - preproc: "%+(\\+|\\?|\\?\\?|)[a-z A-Z 0-9]+" + - preproc: "%\\[[. a-z A-Z 0-9]*\\]" + + ## Sections + - statement: "\\b(?i)(section|segment)(?-i)\\b" + - preproc: "(^|$|[ \t]|)\\.\\b(?i)(code|text|bss|rdata|rodata|pdata|xdata|data)(?-i)\\b" + - preproc: "(^|$|[ \t]|)\\.\\b(?i)(lrodata|ldata|lbss|tdata|tbss|comment|init_array|fini_array|note|other)(?-i)\\b" + - preproc: "\\b(?i)(private|public|common|stack|class|overlay|absolute|flat)(?-i)\\b" + - preproc: "\\b(?i)(progbits|nobits|preinit_array|init_array|fini_array|note)(?-i)\\b" + - preproc: "\\b(?i)(alloc|noalloc|exec|noexec|write|nowrite|pointer)(?-i)\\b" + - preproc: "\\b(?i)(mixed|zerofill|no_dead_strip|live_support|strip_static_syms|debug)(?-i)\\b" + + ## Structs + - preproc: "\\b(?i)(istruc|iend|at|struc|endstruc|struct|endstruct)(?-i)\\b" + + ## Directives + - preproc: "\\b(?i)(near|far|seg|wrt|align|alignb)(?-i)\\b" + - preproc: "\\b(?i)(strict|rel|abs|org|bits|equ|times|dup)(?-i)\\b" + - preproc: "\\b(?i)(db|dw|dd|dq|dt|ddq|do|dy|dz|du)(?-i)\\b" + - preproc: "\\b(?i)(resb|resw|resd|resq|rest|resdq|reso|resy|resz)(?-i)\\b" + - preproc: "\\b(?i)(byte|word|dword|qword|tword|oword|yword|zword)(?-i)\\b" + - preproc: "\\b(?i)(resident|nodata|parm|evex|vex|latevex|function|data|weak)(?-i)\\b" + - statement: "\\b(?i)(export|import|extern|required|global)(?-i)\\b" + - identifier: "[\\.(\\w+)]+:" + + ## CPU and FLOAT + - statement: "\\b(?i)(CPU|FLOAT)(?-i)\\b" + - preproc: "\\b(?i)(PENTIUM|PPRO|P2|P3|KATMAI|P4|WILLAMETTE|PRESCOTT|X64|IA64|ALL)(?-i)\\b" + - preproc: "\\b(?i)(DAZ|NODAZ|NEAR|UP|DOWN|ZERO|DEFAULT)(?-i)\\b" + + ## Constants + # Numbers + - constant.number: "\\b[0-9]+\\b" + - constant.number: "\\b[0-9]+\\b\\." + - constant.number: "\\b0x[0-9 a-f A-F]+\\b" + + # Strings + - constant.string: + start: '"' + end: '("|$)' + skip: "\\\\." + rules: + - constant.specialChar: "" + + - constant.string: + start: "'" + end: "('|$)" + skip: "\\\\." + rules: + - constant.specialChar: "" + + - constant.string: + start: "`" + end: "(`|$)" + skip: "\\\\." + rules: + - constant.specialChar: "\\\\." + + ## Comment + - comment: + start: ";" + end: "$" + rules: + - constant.specialChar: "" + + - comment: + start: "#" + end: "$" + rules: + - constant.specialChar: ""