длина инструкции в фасме

Тема в разделе "WASM.ASSEMBLER", создана пользователем cupuyc, 26 дек 2010.

  1. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Здравствуйте. Я хочу получить список длин инструкций моей асмовской проги. Ну, например,

    xor eax, eax
    push ebx
    mov edx, eax
    ...

    я на выходе хочу получить
    2
    1
    2

    Как составить соответствующий макрос?
     
  2. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    cupuyc
    Мне видятся три варианта: обрамить каждую инструкцию в подсчёт и вывод длины, написать дизассемблер длин в директивах fasm, превратить каждую инструкцию в макрос.
    Собственно, последний вариант довольно просто реализуется парой прогонов регулярными выражениями по TABLES.INC из пакета fasm. Результат приложен. Пример использования:
    Код (Text):
    1. include 'instrlen.inc'
    2.  
    3. showlens
    4.  
    5. xor eax, eax
    6. push ebx
    7. mov edx, eax
    Модификация display из general.inc отсюда.
     
  3. Rockphorr

    Rockphorr Well-Known Member

    Публикаций:
    0
    Регистрация:
    9 июн 2004
    Сообщения:
    2.622
    Адрес:
    Russia
    имхо листинг с опкодами намного информативнее и проще к использованию
     
  4. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    Rockphorr, Мне нужен не листинг, а длины инструкций.

    l_inc, Спасибо.
     
  5. l_inc

    l_inc New Member

    Публикаций:
    0
    Регистрация:
    29 сен 2005
    Сообщения:
    2.566
    Решил слегка улучшить старый вариант (тем более, что в список инструкций случайно попали и директивы компилятора).
    Теперь instrlen.inc выглядит так:
    Код (Text):
    1. instruction_set equ \
    2. bt,in,ja,jb,jc,je,jg,jl,\
    3. jo,jp,js,jz,or,aaa,aad,aam,\
    4. aas,adc,add,and,bsf,bsr,btc,btr,\
    5. bts,cbw,cdq,clc,cld,cli,cmc,cmp,\
    6. cqo,cwd,daa,das,dec,div,fld,fst,\
    7. hlt,inc,ins,int,jae,jbe,jge,jle,\
    8. jmp,jna,jnb,jnc,jne,jng,jnl,jno,\
    9. jnp,jns,jnz,jpe,jpo,lar,lds,lea,\
    10. les,lfs,lgs,lsl,lss,ltr,mov,mul,\
    11. neg,nop,not,out,pop,por,rcl,rcr,\
    12. rep,ret,rol,ror,rsm,sal,sar,sbb,\
    13. shl,shr,stc,std,sti,str,sub,ud2,\
    14. xor,arpl,call,cdqe,clgi,clts,cmps,cwde,\
    15. dppd,dpps,emms,fabs,fadd,fbld,fchs,fcom,\
    16. fcos,fdiv,feni,fild,fist,fld1,fldz,fmul,\
    17. fnop,fsin,fstp,fsub,ftst,fxam,fxch,idiv,\
    18. imul,insb,insd,insw,int1,int3,into,invd,\
    19. iret,jcxz,jnae,jnbe,jnge,jnle,lahf,lgdt,\
    20. lidt,lldt,lmsw,lock,lods,loop,movd,movq,\
    21. movs,orpd,orps,outs,pand,popa,popd,popf,\
    22. popq,popw,push,pxor,repe,repz,retd,retf,\
    23. retn,retq,retw,sahf,salc,scas,seta,setb,\
    24. setc,sete,setg,setl,seto,setp,sets,setz,\
    25. sgdt,shld,shrd,sidt,sldt,smsw,stgi,stos,\
    26. test,verr,verw,vpor,wait,xadd,xchg,xlat,\
    27. addpd,addps,addsd,addss,andpd,andps,bound,bswap,\
    28. cmova,cmovb,cmovc,cmove,cmovg,cmovl,cmovo,cmovp,\
    29. cmovs,cmovz,cmppd,cmpps,cmpsb,cmpsd,cmpsq,cmpss,\
    30. cmpsw,cpuid,crc32,divpd,divps,divsd,divss,enter,\
    31. extrq,f2xm1,faddp,fbstp,fclex,fcomi,fcomp,fdisi,\
    32. fdivp,fdivr,femms,ffree,fiadd,ficom,fidiv,fimul,\
    33. finit,fistp,fisub,fldcw,fldpi,fmulp,fneni,fprem,\
    34. fptan,fsave,fsqrt,fstcw,fstsw,fsubp,fsubr,fucom,\
    35. fwait,fyl2x,icebp,iretd,iretq,iretw,jecxz,jrcxz,\
    36. lddqu,leave,lodsb,lodsd,lodsq,lodsw,loopd,loope,\
    37. loopq,loopw,loopz,lzcnt,maxpd,maxps,maxsd,maxss,\
    38. minpd,minps,minsd,minss,movbe,movsb,movsd,movsq,\
    39. movss,movsw,movsx,movzx,mulpd,mulps,mulsd,mulss,\
    40. mwait,outsb,outsd,outsw,pabsb,pabsd,pabsw,paddb,\
    41. paddd,paddq,paddw,pandn,pause,pavgb,pavgw,pf2id,\
    42. pf2iw,pfacc,pfadd,pfmax,pfmin,pfmul,pfrcp,pfsub,\
    43. pi2fd,pi2fw,popad,popaw,popfd,popfq,popfw,pslld,\
    44. psllq,psllw,psrad,psraw,psrld,psrlq,psrlw,psubb,\
    45. psubd,psubq,psubw,ptest,pusha,pushd,pushf,pushq,\
    46. pushw,rcpps,rcpss,rdmsr,rdpmc,rdtsc,repne,repnz,\
    47. retfd,retfq,retfw,retnd,retnq,retnw,scasb,scasd,\
    48. scasq,scasw,setae,setbe,setge,setle,setna,setnb,\
    49. setnc,setne,setng,setnl,setno,setnp,setns,setnz,\
    50. setpe,setpo,stosb,stosd,stosq,stosw,subpd,subps,\
    51. subsd,subss,vdppd,vdpps,vmovd,vmovq,vmrun,vmxon,\
    52. vorpd,vorps,vpand,vpxor,wrmsr,xlatb,xorpd,xorps,\
    53. xsave,aesdec,aesenc,aesimc,andnpd,andnps,cmovae,cmovbe,\
    54. cmovge,cmovle,cmovna,cmovnb,cmovnc,cmovne,cmovng,cmovnl,\
    55. cmovno,cmovnp,cmovns,cmovnz,cmovpe,cmovpo,comisd,comiss,\
    56. fcmovb,fcmove,fcmovu,fcomip,fcompp,fdivrp,ffreep,ficomp,\
    57. fidivr,fisttp,fisubr,fldenv,fldl2e,fldl2t,fldlg2,fldln2,\
    58. fnclex,fndisi,fninit,fnsave,fnstcw,fnstsw,fpatan,fprem1,\
    59. frstor,frstpm,fsaved,fsavew,fscale,fsetpm,fstenv,fsubrp,\
    60. fucomi,fucomp,fxsave,getsec,haddpd,haddps,hsubpd,hsubps,\
    61. invept,invlpg,lfence,looped,loopeq,loopew,loopne,loopnz,\
    62. loopzd,loopzq,loopzw,mfence,movapd,movaps,movdqa,movdqu,\
    63. movhpd,movhps,movlpd,movlps,movnti,movntq,movsxd,movupd,\
    64. movups,paddsb,paddsw,pextrb,pextrd,pextrq,pextrw,pfnacc,\
    65. pfsubr,phaddd,phaddw,phsubd,phsubw,pinsrb,pinsrd,pinsrq,\
    66. pinsrw,pmaxsb,pmaxsd,pmaxsw,pmaxub,pmaxud,pmaxuw,pminsb,\
    67. pminsd,pminsw,pminub,pminud,pminuw,pmuldq,pmulhw,pmulld,\
    68. pmullw,popcnt,psadbw,pshufb,pshufd,pshufw,psignb,psignd,\
    69. psignw,pslldq,psrldq,psubsb,psubsw,pswapd,pushad,pushaw,\
    70. pushfd,pushfq,pushfw,rdmsrq,rdrand,rdtscp,setalc,setnae,\
    71. setnbe,setnge,setnle,sfence,shufpd,shufps,skinit,sqrtpd,\
    72. sqrtps,sqrtsd,sqrtss,swapgs,sysret,vaddpd,vaddps,vaddsd,\
    73. vaddss,vandpd,vandps,vcmppd,vcmpps,vcmpsd,vcmpss,vdivpd,\
    74. vdivps,vdivsd,vdivss,vlddqu,vmaxpd,vmaxps,vmaxsd,vmaxss,\
    75. vmcall,vminpd,vminps,vminsd,vminss,vmload,vmovsd,vmovss,\
    76. vmread,vmsave,vmulpd,vmulps,vmulsd,vmulss,vmxoff,vpabsb,\
    77. vpabsd,vpabsw,vpaddb,vpaddd,vpaddq,vpaddw,vpandn,vpavgb,\
    78. vpavgw,vpcmov,vpcomb,vpcomd,vpcomq,vpcomw,vpperm,vprotb,\
    79. vprotd,vprotq,vprotw,vpshab,vpshad,vpshaq,vpshaw,vpshlb,\
    80. vpshld,vpshlq,vpshlw,vpslld,vpsllq,vpsllw,vpsrad,vpsraw,\
    81. vpsrld,vpsrlq,vpsrlw,vpsubb,vpsubd,vpsubq,vpsubw,vptest,\
    82. vrcpps,vrcpss,vsubpd,vsubps,vsubsd,vsubss,vxorpd,vxorps,\
    83. wbinvd,wrmsrq,xgetbv,xrstor,xsetbv,blendpd,blendps,clflush,\
    84. cmovnae,cmovnbe,cmovnge,cmovnle,cmpeqpd,cmpeqps,cmpeqsd,cmpeqss,\
    85. cmplepd,cmpleps,cmplesd,cmpless,cmpltpd,cmpltps,cmpltsd,cmpltss,\
    86. cmpxchg,fcmovbe,fcmovnb,fcmovne,fcmovnu,fdecstp,fincstp,fldenvd,\
    87. fldenvw,fnsaved,fnsavew,fnstenv,frndint,frstord,frstorw,fsincos,\
    88. fstenvd,fstenvw,fucomip,fucompp,fxrstor,fxtract,fyl2xp1,insertq,\
    89. invlpga,invvpid,ldmxcsr,loopned,loopneq,loopnew,loopnzd,loopnzq,\
    90. loopnzw,monitor,movddup,movdq2q,movhlps,movlhps,movntdq,movntpd,\
    91. movntps,movntsd,movntss,movq2dq,mpsadbw,paddusb,paddusw,palignr,\
    92. pavgusb,pblendw,pcmpeqb,pcmpeqd,pcmpeqq,pcmpeqw,pcmpgtb,pcmpgtd,\
    93. pcmpgtq,pcmpgtw,pfcmpeq,pfcmpge,pfcmpgt,pfpnacc,pfrsqrt,phaddsw,\
    94. phsubsw,pmaddwd,pmulhrw,pmulhuw,pmuludq,pshufhw,pshuflw,psubusb,\
    95. psubusw,roundpd,roundps,roundsd,roundss,rsqrtps,rsqrtss,stmxcsr,\
    96. syscall,sysexit,sysretq,ucomisd,ucomiss,vaesdec,vaesenc,vaesimc,\
    97. vandnpd,vandnps,vcomisd,vcomiss,vfrczpd,vfrczps,vfrczsd,vfrczss,\
    98. vhaddpd,vhaddps,vhsubpd,vhsubps,vmclear,vmmcall,vmovapd,vmovaps,\
    99. vmovdqa,vmovdqu,vmovhpd,vmovhps,vmovlpd,vmovlps,vmovupd,vmovups,\
    100. vmptrld,vmptrst,vmwrite,vpaddsb,vpaddsw,vpcomub,vpcomud,vpcomuq,\
    101. vpcomuw,vpextrb,vpextrd,vpextrq,vpextrw,vphaddd,vphaddw,vphsubd,\
    102. vphsubw,vpinsrb,vpinsrd,vpinsrq,vpinsrw,vpmaxsb,vpmaxsd,vpmaxsw,\
    103. vpmaxub,vpmaxud,vpmaxuw,vpminsb,vpminsd,vpminsw,vpminub,vpminud,\
    104. vpminuw,vpmuldq,vpmulhw,vpmulld,vpmullw,vpsadbw,vpshufb,vpshufd,\
    105. vpsignb,vpsignd,vpsignw,vpslldq,vpsrldq,vpsubsb,vpsubsw,vshufpd,\
    106. vshufps,vsqrtpd,vsqrtps,vsqrtsd,vsqrtss,vtestpd,vtestps,xsave64,\
    107. addsubpd,addsubps,blendvpd,blendvps,cmpneqpd,cmpneqps,cmpneqsd,cmpneqss,\
    108. cmpnlepd,cmpnleps,cmpnlesd,cmpnless,cmpnltpd,cmpnltps,cmpnltsd,cmpnltss,\
    109. cmpordpd,cmpordps,cmpordsd,cmpordss,cvtdq2pd,cvtdq2ps,cvtpd2dq,cvtpd2pi,\
    110. cvtpd2ps,cvtpi2pd,cvtpi2ps,cvtps2dq,cvtps2pd,cvtps2pi,cvtsd2si,cvtsd2ss,\
    111. cvtsi2sd,cvtsi2ss,cvtss2sd,cvtss2si,fcmovnbe,fnstenvd,fnstenvw,insertps,\
    112. maskmovq,movmskpd,movmskps,movntdqa,movshdup,movsldup,packssdw,packsswb,\
    113. packusdw,packuswb,pblendvb,pfrcpit1,pfrcpit2,pfrsqit1,pmovmskb,pmovsxbd,\
    114. pmovsxbq,pmovsxbw,pmovsxdq,pmovsxwd,pmovsxwq,pmovzxbd,pmovzxbq,pmovzxbw,\
    115. pmovzxdq,pmovzxwd,pmovzxwq,pmulhrsw,prefetch,rdfsbase,rdgsbase,sysenter,\
    116. sysexitq,unpckhpd,unpckhps,unpcklpd,unpcklps,vblendpd,vblendps,vcmpeqpd,\
    117. vcmpeqps,vcmpeqsd,vcmpeqss,vcmpgepd,vcmpgeps,vcmpgesd,vcmpgess,vcmpgtpd,\
    118. vcmpgtps,vcmpgtsd,vcmpgtss,vcmplepd,vcmpleps,vcmplesd,vcmpless,vcmpltpd,\
    119. vcmpltps,vcmpltsd,vcmpltss,vfmaddpd,vfmaddps,vfmaddsd,vfmaddss,vfmsubpd,\
    120. vfmsubps,vfmsubsd,vfmsubss,vldmxcsr,vmlaunch,vmovddup,vmovhlps,vmovlhps,\
    121. vmovntdq,vmovntpd,vmovntps,vmpsadbw,vmresume,vpaddusb,vpaddusw,vpalignr,\
    122. vpblendw,vpcmpeqb,vpcmpeqd,vpcmpeqq,vpcmpeqw,vpcmpgtb,vpcmpgtd,vpcmpgtq,\
    123. vpcmpgtw,vpcomeqb,vpcomeqd,vpcomeqq,vpcomeqw,vpcomgeb,vpcomged,vpcomgeq,\
    124. vpcomgew,vpcomgtb,vpcomgtd,vpcomgtq,vpcomgtw,vpcomleb,vpcomled,vpcomleq,\
    125. vpcomlew,vpcomltb,vpcomltd,vpcomltq,vpcomltw,vphaddbd,vphaddbq,vphaddbw,\
    126. vphadddq,vphaddsw,vphaddwd,vphaddwq,vphsubbw,vphsubdq,vphsubsw,vphsubwd,\
    127. vpmacsdd,vpmacswd,vpmacsww,vpmaddwd,vpmulhuw,vpmuludq,vpshufhw,vpshuflw,\
    128. vpsubusb,vpsubusw,vroundpd,vroundps,vroundsd,vroundss,vrsqrtps,vrsqrtss,\
    129. vstmxcsr,vucomisd,vucomiss,vzeroall,wrfsbase,wrgsbase,xrstor64,xsaveopt,\
    130. cmpxchg8b,cvttpd2dq,cvttpd2pi,cvttps2dq,cvttps2pi,cvttsd2si,cvttss2si,extractps,\
    131. pclmulqdq,pcmpestri,pcmpestrm,pcmpistri,pcmpistrm,pmaddubsw,prefetchw,punpckhbw,\
    132. punpckhdq,punpckhwd,punpcklbw,punpckldq,punpcklwd,vaddsubpd,vaddsubps,vblendvpd,\
    133. vblendvps,vcmpneqpd,vcmpneqps,vcmpneqsd,vcmpneqss,vcmpngepd,vcmpngeps,vcmpngesd,\
    134. vcmpngess,vcmpngtpd,vcmpngtps,vcmpngtsd,vcmpngtss,vcmpnlepd,vcmpnleps,vcmpnlesd,\
    135. vcmpnless,vcmpnltpd,vcmpnltps,vcmpnltsd,vcmpnltss,vcmpordpd,vcmpordps,vcmpordsd,\
    136. vcmpordss,vcvtdq2pd,vcvtdq2ps,vcvtpd2dq,vcvtpd2ps,vcvtph2ps,vcvtps2dq,vcvtps2pd,\
    137. vcvtps2ph,vcvtsd2si,vcvtsd2ss,vcvtsi2sd,vcvtsi2ss,vcvtss2sd,vcvtss2si,vfnmaddpd,\
    138. vfnmaddps,vfnmaddsd,vfnmaddss,vfnmsubpd,vfnmsubps,vfnmsubsd,vfnmsubss,vinsertps,\
    139. vmovmskpd,vmovmskps,vmovntdqa,vmovshdup,vmovsldup,vpackssdw,vpacksswb,vpackusdw,\
    140. vpackuswb,vpblendvb,vpcomequb,vpcomequd,vpcomequq,vpcomequw,vpcomgeub,vpcomgeud,\
    141. vpcomgeuq,vpcomgeuw,vpcomgtub,vpcomgtud,vpcomgtuq,vpcomgtuw,vpcomleub,vpcomleud,\
    142. vpcomleuq,vpcomleuw,vpcomltub,vpcomltud,vpcomltuq,vpcomltuw,vpcomneqb,vpcomneqd,\
    143. vpcomneqq,vpcomneqw,vpermilpd,vpermilps,vphaddubd,vphaddubq,vphaddubw,vphaddudq,\
    144. vphadduwd,vphadduwq,vpmacsdqh,vpmacsdql,vpmacssdd,vpmacsswd,vpmacssww,vpmadcswd,\
    145. vpmovmskb,vpmovsxbd,vpmovsxbq,vpmovsxbw,vpmovsxdq,vpmovsxwd,vpmovsxwq,vpmovzxbd,\
    146. vpmovzxbq,vpmovzxbw,vpmovzxdq,vpmovzxwd,vpmovzxwq,vpmulhrsw,vunpckhpd,vunpckhps,\
    147. vunpcklpd,vunpcklps,aesdeclast,aesenclast,cmpunordpd,cmpunordps,cmpunordsd,cmpunordss,\
    148. cmpxchg16b,loadall286,loadall386,maskmovdqu,phminposuw,prefetcht0,prefetcht1,prefetcht2,\
    149. punpckhqdq,punpcklqdq,vcmptruepd,vcmptrueps,vcmptruesd,vcmptruess,vcvttpd2dq,vcvttps2dq,\
    150. vcvttsd2si,vcvttss2si,vextractps,vmaskmovpd,vmaskmovps,vpclmulqdq,vpcmpestri,vpcmpestrm,\
    151. vpcmpistri,vpcmpistrm,vpcomnequb,vpcomnequd,vpcomnequq,vpcomnequw,vpcomtrueb,vpcomtrued,\
    152. vpcomtrueq,vpcomtruew,vperm2f128,vpermil2pd,vpermil2ps,vpmacssdqh,vpmacssdql,vpmadcsswd,\
    153. vpmaddubsw,vpunpckhbw,vpunpckhdq,vpunpckhwd,vpunpcklbw,vpunpckldq,vpunpcklwd,vzeroupper,\
    154. xsaveopt64,pclmulhqhdq,pclmullqhdq,prefetchnta,vaesdeclast,vaesenclast,vcmpeq_ospd,vcmpeq_osps,\
    155. vcmpeq_ossd,vcmpeq_osss,vcmpeq_uqpd,vcmpeq_uqps,vcmpeq_uqsd,vcmpeq_uqss,vcmpeq_uspd,vcmpeq_usps,\
    156. vcmpeq_ussd,vcmpeq_usss,vcmpfalsepd,vcmpfalseps,vcmpfalsesd,vcmpfalsess,vcmpge_oqpd,vcmpge_oqps,\
    157. vcmpge_oqsd,vcmpge_oqss,vcmpgt_oqpd,vcmpgt_oqps,vcmpgt_oqsd,vcmpgt_oqss,vcmple_oqpd,vcmple_oqps,\
    158. vcmple_oqsd,vcmple_oqss,vcmplt_oqpd,vcmplt_oqps,vcmplt_oqsd,vcmplt_oqss,vcmpord_spd,vcmpord_sps,\
    159. vcmpord_ssd,vcmpord_sss,vcmpunordpd,vcmpunordps,vcmpunordsd,vcmpunordss,vfmadd132pd,vfmadd132ps,\
    160. vfmadd132sd,vfmadd132ss,vfmadd213pd,vfmadd213ps,vfmadd213sd,vfmadd213ss,vfmadd231pd,vfmadd231ps,\
    161. vfmadd231sd,vfmadd231ss,vfmaddsubpd,vfmaddsubps,vfmsub132pd,vfmsub132ps,vfmsub132sd,vfmsub132ss,\
    162. vfmsub213pd,vfmsub213ps,vfmsub213sd,vfmsub213ss,vfmsub231pd,vfmsub231ps,vfmsub231sd,vfmsub231ss,\
    163. vfmsubaddpd,vfmsubaddps,vinsertf128,vmaskmovdqu,vpcomfalseb,vpcomfalsed,vpcomfalseq,vpcomfalsew,\
    164. vpcomtrueub,vpcomtrueud,vpcomtrueuq,vpcomtrueuw,vphminposuw,vpunpckhqdq,vpunpcklqdq,pclmulhqlqdq,\
    165. pclmullqlqdq,vbroadcastsd,vbroadcastss,vcmpneq_oqpd,vcmpneq_oqps,vcmpneq_oqsd,vcmpneq_oqss,vcmpneq_ospd,\
    166. vcmpneq_osps,vcmpneq_ossd,vcmpneq_osss,vcmpneq_uspd,vcmpneq_usps,vcmpneq_ussd,vcmpneq_usss,vcmpnge_uqpd,\
    167. vcmpnge_uqps,vcmpnge_uqsd,vcmpnge_uqss,vcmpngt_uqpd,vcmpngt_uqps,vcmpngt_uqsd,vcmpngt_uqss,vcmpnle_uqpd,\
    168. vcmpnle_uqps,vcmpnle_uqsd,vcmpnle_uqss,vcmpnlt_uqpd,vcmpnlt_uqps,vcmpnlt_uqsd,vcmpnlt_uqss,vextractf128,\
    169. vfnmadd132pd,vfnmadd132ps,vfnmadd132sd,vfnmadd132ss,vfnmadd213pd,vfnmadd213ps,vfnmadd213sd,vfnmadd213ss,\
    170. vfnmadd231pd,vfnmadd231ps,vfnmadd231sd,vfnmadd231ss,vfnmsub132pd,vfnmsub132ps,vfnmsub132sd,vfnmsub132ss,\
    171. vfnmsub213pd,vfnmsub213ps,vfnmsub213sd,vfnmsub213ss,vfnmsub231pd,vfnmsub231ps,vfnmsub231sd,vfnmsub231ss,\
    172. vpclmulhqhdq,vpclmullqhdq,vpcomfalseub,vpcomfalseud,vpcomfalseuq,vpcomfalseuw,vpermilmo2pd,vpermilmo2ps,\
    173. vpermilmz2pd,vpermilmz2ps,vpermiltd2pd,vpermiltd2ps,vcmptrue_uspd,vcmptrue_usps,vcmptrue_ussd,vcmptrue_usss,\
    174. vcmpunord_spd,vcmpunord_sps,vcmpunord_ssd,vcmpunord_sss,vpclmulhqlqdq,vpclmullqlqdq,vbroadcastf128,vcmpfalse_ospd,\
    175. vcmpfalse_osps,vcmpfalse_ossd,vcmpfalse_osss,vfmaddsub132pd,vfmaddsub132ps,vfmaddsub213pd,vfmaddsub213ps,vfmaddsub231pd,\
    176. vfmaddsub231ps,vfmsubadd132pd,vfmsubadd132ps,vfmsubadd213pd,vfmsubadd213ps,vfmsubadd231pd,vfmsubadd231ps,aeskeygenassist,\
    177. vaeskeygenassist
    178.  
    179. include 'general.inc'
    180.  
    181. macro ilen_eval_begin [iset]
    182. {
    183.     common match \iset,iset \{ irp i,\iset
    184.     \\{
    185.         macro i [args]
    186.         \\\{
    187.             \\\common \\\local iSize
    188.                 i args
    189.                 virtual
    190.                     i args
    191.                     iSize = $-$$
    192.                 end virtual
    193.                 display d=iSize,' (',\\\`i
    194.                 match any,args \\\\{ display ' ' \\\\}
    195.                 irps arg,args \\\\{ display \\\\`arg \\\\}
    196.                 display ')',13,10
    197.         \\\}
    198.     \\} \}
    199. }
    200.  
    201. macro ilen_eval_end [iset]
    202. {
    203.     common match \iset,iset \{ irp i,\iset \\{ purge i \\} \}
    204. }
    Пример использования:
    Код (Text):
    1. use32
    2. include 'win32a.inc'
    3. include 'instrlen.inc'
    4.  
    5. xor eax, eax
    6.  
    7. ilen_eval_begin instruction_set
    8. stdcall myproc,ebx,ecx
    9. ilen_eval_end instruction_set
    10.  
    11. movzx edx, byte[eax]
    12.  
    13. ilen_eval_begin instruction_set
    14. myproc:
    15.     xor eax, eax
    16.     nop
    17.     movzx edx, byte[eax]
    18. ret
    19. ilen_eval_end instruction_set
    20.  
    21. nop
    cupuyc
    Пожалуйста. :)

    P.S. Не прошло и года, как я надумал ещё слегка подправить эти макросы. :)