o a@spdZddlZddlmZmZmZmZmZmZm Z ddl m Z m Z ddl mZddlmZmZmZmZmZmZmZmZmZmZgdZGdd d eZd d ZGd d d eZGdddeZGdddeZGdddeZ GdddeZ!GdddeZ"GdddeZ#GdddeZ$GdddeZ%GdddeZ&Gd d!d!eZ'Gd"d#d#eZ(Gd$d%d%eZ)dS)&z pygments.lexers.asm ~~~~~~~~~~~~~~~~~~~ Lexers for assembly languages. :copyright: Copyright 2006-2021 by the Pygments team, see AUTHORS. :license: BSD, see LICENSE for details. N) RegexLexerincludebygroupsusingwordsDelegatingLexerdefault)CppLexerCLexer)DLexer) TextNameNumberStringComment PunctuationOtherKeywordOperator Whitespace)GasLexer ObjdumpLexer DObjdumpLexerCppObjdumpLexer CObjdumpLexer HsailLexer LlvmLexerLlvmMirBodyLexer LlvmMirLexer NasmLexerNasmObjdumpLexer TasmLexer Ca65Lexer Dasm16Lexerc@seZdZdZdZddgZddgZdgZdZd Z d e d e d Z d Z de dZ e de dejfde ejdfdejfe ejdfdefge ejfeefde ejfe ejfe ejfdedfdejdfdejfdejdfe de dg de deejeeejefde de deejeeejeejefe ejfe ejfe ejfd e ejfd!ejfdedfdejdfdejfdejdfe de dg d"efd#efdejfd$ejfgd%efgd&Z d'd(Z!d)S)*rz' For Gas (AT&T) assembly code. GASgasasm*.sz*.Sz text/x-gas "(\\"|[^"])*"z[\w$.@-] (?:[a-zA-Z$_]*|\.+)z(?:0[xX][a-fA-F0-9]+|#?-?\d+)%\b whitespace:\.directive-argszlock|rep(n?z)?|data\d+instruction-args[\r\n]+@#popz([;#]|//).*?\nz /[*].*?[*]/z/[*].*?\n[\w\W]*?[*]/ punctuationz([a-z0-9]+)( )(<)(z)(>)z)([-+])($z $'(.|\\')'\n\s+z/[*][\w\W]*?[*]/z[-*,.()\[\]!:]+)rootr1r2r.r6cCs,td|tjr dStd|tjrdSdS)Nz^\.(text|data|section)Tz^\.\w+g?)researchMtextr@5/usr/lib/python3/dist-packages/pygments/lexers/asm.py analyse_textfs zGasLexer.analyse_textN)"__name__ __module__ __qualname____doc__namealiases filenames mimetypesstringchar identifiernumberregisterrr Label AttributeFunctionr ConstantrrIntegerVariablerrSingle MultilinerHexrChartokensrBr@r@r@rArsz            :)$z+)( )(<)(.*?)(>:)$z( *)(z +:)(\t)((?:z )+)( * )([a-zA-Z].*?)$z+:)( *\t)([a-zA-Z].*?)$z )+)( *)(.*?)$z )+)$z \t\.\.\.$z (\t\t\t)(z +:)( )([^\t]+)(\t)(.*?)([-+])(0xz+)$z+:)( )([^\t]+)(\t)(.*?)$z[^\n]+\n)rr rPrr rrrXrrRrPropertyrSr) asm_lexerhex_rer@r@rA_objdump_lexer_tokensms`       r_c@.eZdZdZdZdgZdgZdgZee Z dS)rz, For the output of ``objdump -dr``. objdumpz *.objdumpztext/x-objdumpN) rCrDrErFrGrHrIrJr_rrZr@r@r@rArs rc6eZdZdZdZdgZdgZdgZfddZZ S)rz@ For the output of ``objdump -Sr`` on compiled D files. z d-objdumpz *.d-objdumpztext/x-d-objdumpc tjttfi|dSN)super__init__r rselfoptions __class__r@rArfzDObjdumpLexer.__init__ rCrDrErFrGrHrIrJrf __classcell__r@r@rjrArrcs:eZdZdZdZgdZgdZdgZfddZZ S)rzB For the output of ``objdump -Sr`` on compiled C++ files. cpp-objdump)rpz c++-objdumbz cxx-objdump)z *.cpp-objdumpz *.c++-objdumpz *.cxx-objdumpztext/x-cpp-objdumpc rcrd)rerfr rrgrjr@rArfrlzCppObjdumpLexer.__init__rmr@r@rjrArsrcrb)rz@ For the output of ``objdump -Sr`` on compiled C files. z c-objdumpz *.c-objdumpztext/x-c-objdumpc rcrd)rerfr rrgrjr@rArfrlzCObjdumpLexer.__init__rmr@r@rjrArrorc@s\eZdZdZdZddgZdgZdgZdZdZ d Z d e d Z d Z d Z dZdZdZdZdZdZededeefde dejfe ejjfedde ejjfde ejfeejfdejfeejfeejfdejfdefgde fgde!j"fd e!j#fgd!ee$j%fd"e$fe&d#d$d%e$fee$fee$fd&e d'e d(e$fd)e$fd*e$fe&d+e$fd,e$fg d-Z'd.S)/rz= For HSAIL assembly code. .. versionadded:: 2.2 HSAILhsailhsaz*.hsailz text/x-hsail"[^"]*?"z[a-zA-Z_][\w.]*[0-9]+z (\$(c|s|d|q)z)\bz(align\(\d+\))z(width\((\d+|all)\))z(alloc\(agent\))z ((_ftz)?(_up|_down|_zero|_near))z_(u8x4|s8x4|u16x2|s16x2|u8x8|s8x8|u16x4|s16x4|u32x2|s32x2|u8x16|s8x16|u16x8|s16x8|u32x4|s32x4|u64x2|s64x2|f16x2|f16x4|f16x8|f32x2|f32x4|f64x2|u8|s8|u16|s16|u32|s32|u64|s64|b128|b8|b16|b32|b64|b1|f16|f32|f64|roimg|woimg|rwimg|samp|sig32|sig64)z ((\d+\.)|(\d*\.\d+))[eE][+-]?\d+zL0[xX](([0-9a-fA-F]+\.[0-9a-fA-F]*)|([0-9a-fA-F]*\.[0-9a-fA-F]+))[pP][+-]?\d+z?0((h|H)[0-9a-fA-F]{4}|(f|F)[0-9a-fA-F]{8}|(d|D)[0-9a-fA-F]{16})r.commentsr4z:?keyword&r,0[xX][a-fA-F0-9]+\d+z[=<>{}\[\]()*.,:;!]|x\bz(\n|\s)+z /\*.*?\*/z//.*?\nkernargz+\$(full|base|small|large|default|zero|near))module extensionpragmaprogindirect signaturedeclkernelfunctionenablebreakexceptionsenabledetectexceptionsmaxdynamicgroupsizemaxflatgridsizemaxflatworkgroupsize requireddimrequiredgridsizerequiredworkgroupsizerequirenopartialworkgroupsr-suffixz_(|)_kernargz(nop|imagefence)\b)cleardetectexceptclockcuid debugtrapdimgetdetectexcept groupbaseptrkernargbaseptrlaneidmaxcuid maxwaveidpacketidsetdetectexceptwaveidworkitemflatabsidworkitemflatidnullptrabsbitrevcurrentworkgroupsizecurrentworkitemflatidfractncosnegnexp2nlog2nrcpnrsqrtnsinnsqrt gridgroupsgridsizenotsqrt workgroupid workgroupsize workitemabsid workitemidceilfloorrinttruncaddbitmaskborrowcarrycopysigndivremsubshlshrandorxorunpackhiunpacklomaxminfmamad bitextract bitselectshufflecmovbitalign bytealignlerpnfmamulmulhimul24himul24mad24mad24hi bitinsertcombineexpandldamovpackunpackpackcvt unpackcvtsadsementpftosstofcmpldst_eq_ne_lt_le_gt_ge_equ_neu_ltu_leu_gtu_geu_num_nan_seq_sne_slt_sle_sgt_sge_snum_snan_sequ_sneu_sltu_sleu_sgtu_sgeuatomic_ld_st_cas_add_and_exch_max_min_or_sub_wrapdec_wrapinc_xorretcvt _readonlyr_globalbrcbrsbr_scacq_screl_scar_rlx_wave_wg_agent_systemldimagestimage_v2_v3_v4_1d_2d_3d_1da_2da_1db_2ddepth _2dadepth_width_height_depth_array _channelorder _channeltype querysampler_coord_filter _addressingbarrier wavebarrierinitfbarjoinfbarwaitfbar arrivefbar leavefbar releasefbarldf activelaneidactivelanecountactivelanemaskactivelanepermutecallscallicallallocapacketcompletionsigaddqueuewriteindexcasqueuewriteindexldqueuereadindexstqueuereadindexreadonlyglobalprivategroupspillarg_upi_downi_zeroi_neari_upi_sat _downi_sat _zeroi_sat _neari_sat_supi_sdowni_szeroi_sneari _supi_sat _sdowni_sat _szeroi_sat _sneari_sat_pp_ps_sp_ss_s_p_pp_sat_ps_sat_sp_sat_ss_sat_s_sat_p_sat i[1-9]\d*)r:r.rvrwN)(rCrDrErFrGrHrIrJrKrMregister_numberrO alignQual widthQual allocQual roundingMod datatypeModfloathexfloat ieeefloatrrr rPrU AnonymousGlobalrrXFloatrTrrrrWrVrTyperrZr@r@r@rArsp      %( rc@seZdZdZdZdgZdgZdgZdZdedZ d e d Z e d e d e j fe d de e jfde e jjfde jjfde jjfde jjfde e jfde jjfdeefdefdefdefgdefdefgedddefedejfdejfgd Zd!S)"rz! For LLVM assembly code. LLVMllvmz*.llz text/x-llvmrtz([-a-zA-Z$._][\w\-$.]*|rr[z|(\d+))r.z\s*:rwr,r4z%\d+z@\d+z#\d+!z!\d+zc?ryz,-?\d+(?:[.]\d+)?(?:[eE][-+]?\d+(?:[.]\d+)?)?z[=<>{}\[\]()*.,!]|x\bz (\n|\s+)+;.*?\n(aarch64_sve_vector_pcsaarch64_vector_pcsacq_relacquirer addrspace addrspacecastafnaliasaliaseealign alignLog2 alignstackrN allocsizeallOnes alwaysinline alwaysInline amdgpu_cs amdgpu_es amdgpu_gfx amdgpu_gs amdgpu_hs amdgpu_kernel amdgpu_ls amdgpu_ps amdgpu_vsranyanyregcc appendingarcp argmemonlyargsarm_aapcs_vfpcc arm_aapcscc arm_apcsccashrr&r  atomicrmw attributesavailable_externally avr_intrcc avr_signalccbitbitcastbitMask blockaddress blockcountr branchFunnelbuiltinbyArgbyrefbyte byteArraybyvalcrKcallbrcalleecallercalls canAutoHidecatchcatchpadcatchret catchswitchccccccfguard_checkcccleanup cleanuppad cleanupretcmpxchgcoldcoldcccomdatcommonconstantcontract convergentcriticalcxx_fast_tlscc datalayoutdeclarerdefinedeplibsdereferenceabledereferenceable_or_nulldistinct dllexport dllimport dso_localdso_local_equivalentdso_preemptabledsoLocaleqexact exactmatch extern_weakexternalexternally_initializedextractelement extractvaluefaddfalsefastfastccfcmpfdivfencefilterflagsfmulfnegfpextfptosifptouifptruncfreezefremfromfsub funcFlagsrgc getelementptrghcccrUguidgvhashhhvm_ccchhvmcchiddenhothotnessicmpifuncinaccessiblemem_or_argmemonlyinaccessiblememonlyinallocainboundsindir indirectbrinfo initialexecinline inlineBits inlinehintinrangeinreg insertelement insertvalueinstsintel_ocl_bicc inteldialectinternalinttoptrinvoke jumptablekind landingpadlargestlinkagelinkonce linkonce_odrliveloadlocal_unnamed_addr localdynamic localexeclshrrmetadatarminsizer| monotonic msp430_intrccr mustprogressmusttailnakedrGnandnenestninfnnannoalias nobuiltin nocallback nocapture nocf_check noduplicate noduplicatesnofreenoimplicitfloatnoinlinenoInlinenomergenone nonlazybindnonnull noprofile norecurse noRecurse noredzonenoreturnnosyncnotailnotEligibleToImportnoundefnounwindnswnsznullnull_pointer_is_validnuwoeqoffsetogeogtoleoltoneopaque optforfuzzingoptnoneoptsizerordparamparams partitionpath personalityphipoison preallocatedprefixpreserve_allccpreserve_mostccrVprologue protectedptrtoint ptx_device ptx_kernelreadnonereadNonerTreadOnlyreassocrefsrelbfreleaseresByArgresumerreturnDoesNotAliasreturned returns_twice safestacksamesizesanitize_addresssanitize_hwaddresssanitize_memorysanitize_memtagsanitize_threadsdivsectionselectseq_cstsextsgesgtshadowcallstackr shufflevector sideeffectsignextsingle singleImplsingleImplNamesitofpsizeM1sizeM1BitWidthslesltsource_filename speculatablespeculative_load_hardening spir_func spir_kernelsremsretsspsspreq sspstrongstorestrictfpr summariessummaryswiftcc swifterror swiftselfswitch syncscopetailtailcctarget thread_localtotokentripletruertypetypeCheckedLoadConstVCallstypeCheckedLoadVCallstypeidtypeidCompatibleVTable typeIdInfotypeTestAssumeConstVCallstypeTestAssumeVCalls typeTestRes typeTestsudivuequgeugtuitofpuleultumaxuminundefune uniformRetVal uniqueRetValunknown unnamed_addruno unordered unreachableunsatunwindurem uselistorderuselistorder_bbuwtableva_argvarFlagsvariablevcall_visibilityvFuncIdvirtFuncvirtualConstPropvoidvolatilevscale vTableFuncsweakweak_odr webkit_jsccwin64ccwithinwpdReswpdResolutions writeonlyx x86_64_sysvccx86_fastcallcc x86_intrccx86_mmx x86_regcallcc x86_stdcallccx86_thiscallccx86_vectorcallccxchgrzeroextzeroinitializerzextimmarg willreturnr-r) rhalfbfloatr}doublefp128x86_fp80 ppc_fp128labelr.rx86_amxrrv)r:r.rwN)rCrDrErFrGrHrIrJrKrM block_labelrr rPrUrrrrrrrrrrrZr@r@r@rAr\sL          TTW rc@seZdZdZdZdgZgZgZeddde fde j fde j fd e j fd e fd e fd e j d fe dde j jfedddde jfedddde jfdejfdefde jfde jfede fdee jedfde jdfe dd eeed!fd"efd#e fd$efge dd%ed&fge d'd%ed&fgd(eee d)fd*eeed+fd%ed&fgd,eee j jfd-eee j fd*eeed+fd%ed&fgd.eee jfd/eee jfded&fd%ed&fgd0efd1efed2e fd3e fd4e fd5efe de dd6efd7efded&fg d8ejfgd9ejfgd:e j jfgd; Zd)z\(z +) r)ronintorrr0rrzrrz%ir\.[a-zA-Z0-9_.-]+z%ir-block\.[a-zA-Z0-9_.-]+z[-+],z\), \(z-?[0-9]+z-?[0-9]+\.[0-9]+(e[+-][0-9]+)?z\@[a-zA-Z0-9_.]+) r:rr rr rr r r}rUN)rCrDrErFrGrHrIrJrrr rPrUrrBuiltinrrVrrrrrr MagicrrrTrrZr@r@r@rArs    K      rc @seZdZdZdZdgZdgZdefdedfded fd e fgd ed fd e e e fgdefd ed fdedfe dddedfe dddedfe dddefdedfde fdefg defed gdejfed gdefed gd edfde e efd e e efgd!Zd"S)#ra Lexer for the overall LLVM MIR document format. MIR is a human readable serialization format that's used to represent LLVM's machine specific intermediate representation. It allows LLVM's developers to see the state of the compilation process at various points, as well as test individual pieces of the compiler. For more information on LLVM MIR see https://llvm.org/docs/MIRLangRef.html. .. versionadded:: 2.6 zLLVM-MIRzllvm-mirz*.mir#.*z--- \|$llvm_irz---llvm_mirz[^-#]+|.z(\.\.\.|(?=---))r5z((?:.|\n)+?)(?=(\.\.\.|---))zname:rG) alignmentr/rrN) legalizedregBankSelectedtracksRegLivenessselectedexposesReturnsTwiceboolean) registersstack fixedStackr frameInfomachineFunctionInfoz body: *\| llvm_mir_bodyz.+r8z[^\n]+z *(true|false)z *[0-9]+z#pop:2z((?:.|\n)+?)(?=\.\.\.|---)z(?!\.\.\.|---)((?:.|\n)+))r:rrrGrrNr#N)rCrDrErFrGrHrIrrr rrrrrr rrrrrZr@r@r@rArvsb   rc @seZdZdZdZdgZddgZdgZdZdZ d Z d Z d Z d Z e d e ZdZdZdZdZdZdZejejBZdejdfede dejfde eeje e!j"dfee!dfee!j"dfe ej#dfde fgee$fe e%j&fe e%j'fe e%j(fee%j)fe e%j*fedeej+fe ej,fde dfedg dejfdej-dfdejdfgde fd e fd!ej-fd"ej-fgd#e.fd$e/fd%e!jfee/j0fee!j1fgd&Z2d'd(Z3d)S)*rz) For Nasm (Intel) assembly code. NASMnasm*.asm*.ASMz text/x-nasmg?z[a-z$._?][\w$.?#@~]*,(?:0x[0-9a-f]+|$0[0-9a-f]*|[0-9]+[0-9a-f]*h)[0-7]+q[01]+bru\.e?/"(\\"|[^"\n])*"|'(\\'|[^'\n])*'|`(\\`|[^`\n])*`(?:res|d)[bwdqt]|timeszt(r[0-9][0-5]?[bwd]?|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7])\bseg|wrt|strictbyte|[dq]?wordz(?:BITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|COMMON|CPU|GROUP|UPPERCASE|IMPORT|EXPORT|LIBRARY|MODULE)(?=\s)^\s*%preprocr.r/z(%s)(\s+)(equ)r2r3r6r5[^;\n]+rr8[ \t]+r r [,():\[\]]+z[&|^<>+*/%~-]+[$]+r:r2r1r.r6cCtd|tjr dSdS)NPROCF)r;match IGNORECASEr>r@r@rArBzNasmLexer.analyse_textN)4rCrDrErFrGrHrIrJpriorityrMhexnoctnbinndecnfloatnrKdeclkwrOwordopr directivesr;r: MULTILINErrPreprocrr rPrrSrr DeclarationrRrrrXOctBinrrTrrUrVrrWordrrZrBr@r@r@rArsz          .rc@r`)r zO For the output of ``objdump -d -M intel``. .. versionadded:: 2.0 z objdump-nasmz*.objdump-intelztext/x-nasm-objdumpN) rCrDrErFrGrHrIrJr_rrZr@r@r@rAr s r c@seZdZdZdZdgZgdZdgZdZdZ dZ d Z d Z e d e Z d Zd ZdZdZdZdZdZejejBZdejdfededejfeedfdeefeej e!ej"dfeej"dfeej#dfde!fgee$fe e%j&fe e%j'fe e%j(fe e%j)fe e%j*fedeej+feej,fdee-e!ej.e!fde!dfedg dejfdej.dfdejdfgd e!fd!ee-e!fd"e!fd#ej.fgd$e/fd%e0fd&ej fee0j1feej2fgd'Z3d(d)Z4d*S)+r!z3 For Tasm (Turbo Assembler) assembly code. TASMtasm)r&r'z*.tasmz text/x-tasmz[@a-z$._?][\w$.?#@~]*r(r)r*rur+r,r-zs(r[0-9][0-5]?[bwd]|[a-d][lh]|[er]?[a-d]x|[er]?[sb]p|[er]?[sd]i|[c-gs]s|st[0-7]|mm[0-7]|cr[0-4]|dr[0-367]|tr[3-7])\br.r/zBITS|USE16|USE32|SECTION|SEGMENT|ABSOLUTE|EXTERN|GLOBAL|ORG|ALIGN|STRUC|ENDSTRUC|ENDS|COMMON|CPU|GROUP|UPPERCASE|INCLUDE|EXPORT|LIBRARY|MODULE|PROC|ENDP|USES|ARG|DATASEG|UDATASEG|END|IDEAL|P386|MODEL|ASSUME|CODESEG|SIZEzdb|dd|dw|T[A-Z][a-z]+r0r1r.r/r2z (%s)(\s+)(%s)r3r6z(\\)(\s*)(;.*)([\r\n])r5r2rr8z[\n\r]z (\\)([\n\r])r3r r4z[&|^<>+*=/%~-]+r5r6cCr7)Nr8T)r;r9Ir>r@r@rArByr;zTasmLexer.analyse_textN)5rCrDrErFrGrHrIrJrMr=r>r?r@rArKrBrOrCrrDdatatyper;r:rErrrFrr rPrrrSrrGrRrrrXrHrIrrTrrUr rVrrrJrrZrBr@r@r@rAr!*s|            0r!c@seZdZdZdZdgZdgZejZ dde j fde fde jfd efd ejfd efd efd ejfdejfdejfdejfdefde fg iZddZdS)r"z@ For ca65 assembler sources. .. versionadded:: 1.6 zca65 assemblerca65r'r:r r9z[a-z_.@$][\w.@$]*:z((ld|st)[axy]|(in|de)[cxy]|asl|lsr|ro[lr]|adc|sbc|cmp|cp[xy]|cl[cvdi]|se[cdi]|jmp|jsr|bne|beq|bpl|bmi|bvc|bvs|bcc|bcs|p[lh][ap]|rt[is]|brk|nop|ta[xy]|t[xy]a|txs|tsx|and|ora|eor|bit)\bz\.\w+z[-+~*/^&|!<>=]z "[^"\n]*.z '[^'\n]*.z\$[0-9a-f]+|[0-9a-f]+h\brzz%[01]+z [#,.:()=\[\]]z[a-z_.@$][\w.@$]*cCstd|tjr dSdS)Nz^\s*;g?)r;r<rE)rhr?r@r@rArBr;zCa65Lexer.analyse_textN)rCrDrErFrGrHrIr;r:rrrVrr rPrPseudorrrYrrXrTrIrrZrBr@r@r@rAr"s2 r"c @sjeZdZdZdZdgZddgZdgZgdZgdZ d Z d e d e d Z d Z dZ ddedZde dZdZddZedde ejfe dejfeejdfde ejdfdefge ejfe ejfeefge efedgdefded fed!edgded fd"ed fedgd#efd$ed%fed!ed&gd#efedeefed&gd'efd(efd)efgd*Zd+S),r#zf For DCPU-16 Assembly. Check http://0x10c.com/doc/dcpu-16.txt .. versionadded:: 2.4 DASM16dasm16z*.dasm16z*.dasmz text/x-dasm16)$SETADDSUBMULMLIDIVDVIMODMDIANDBORXORSHRASRSHLIFBIFCIFEIFNIFGIFAIFLIFUADXSBXSTISTDJSRINTIAGIASRFIIAQHWNHWQHWI)ABCXYZrMJSPPCEXPOPPEEKPUSHz[a-zA-Z0-9_$@.]r)r*r+z[+-]?(?:0[xX][a-zA-Z0-9]+|\d+)z0b[01_]+z(?i)(rrz'\\?'r(ccs:|d}||jvrtjntj}|||fVdS)Nr)rWupper REGISTERSr rUrPstart)lexerr9identklassr@r@rAguess_identifiers zDasm16Lexer.guess_identifierr.r/r2r0 data-argsr3numericz\+z\]r5rYz;.*?$rz\[derefinstruction-liner8r9r)r:rrYrrr2rr.N)rCrDrErFrGrHrIrJ INSTRUCTIONSrrLrMrN binary_numberjoin instruction single_charrKrrr rPrRrrrTrrrrZr@r@r@rAr#sl       r#)*rFr;pygments.lexerrrrrrrrpygments.lexers.c_cppr r pygments.lexers.dr pygments.tokenr r rrrrrrrr__all__rr_rrrrrrrrrr r!r"r#r@r@r@rAs2 $ 0S5    QUU'