⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dasm_x86.lua

📁 采用C语言写的Lua的解释器的代码!Lua不用介绍了吧
💻 LUA
📖 第 1 页 / 共 4 页
字号:
  pushf_0 =	"9C",  pushfw_0 =	"669C",  pushfd_0 =	"9C",  popf_0 =	"9D",  popfw_0 =	"669D",  popfd_0 =	"9D",  sahf_0 =	"9E",  lahf_0 =	"9F",  mov_2 =	"OR:A3o|RO:A1O|mr:89Rm|rm:8BrM|rib:nB0ri|ridw:B8ri|mi:C70mi",  movsb_0 =	"A4",  movsw_0 =	"66A5",  movsd_0 =	"A5",  cmpsb_0 =	"A6",  cmpsw_0 =	"66A7",  cmpsd_0 =	"A7",  -- A8: test Rb,i  -- A9: test Rdw,i  stosb_0 =	"AA",  stosw_0 =	"66AB",  stosd_0 =	"AB",  lodsb_0 =	"AC",  lodsw_0 =	"66AD",  lodsd_0 =	"AD",  scasb_0 =	"AE",  scasw_0 =	"66AF",  scasd_0 =	"AF",  -- B0-B7: mov rb,i  -- B8-BF: mov rdw,i  -- C0: rol... mb,i  -- C1: rol... mdw,i  ret_1 =	"i.:nC2W",  ret_0 =	"C3",  -- C4: *les rdw,mq  -- C5: *lds rdw,mq  -- C6: mov mb,i  -- C7: mov mdw,i  -- C8: *enter iw,ib  leave_0 =	"C9",  -- CA: *retf iw  -- CB: *retf  int3_0 =	"CC",  int_1 =	"i.:nCDU",  into_0 =	"CE",  -- CF: *iret  -- D0: rol... mb,1  -- D1: rol... mdw,1  -- D2: rol... mb,cl  -- D3: rol... mb,cl  -- D4: *aam ib  -- D5: *aad ib  -- D6: *salc  -- D7: *xlat  -- D8-DF: floating point ops  -- E0: *loopne  -- E1: *loope  -- E2: *loop  -- E3: *jcxz, *jecxz  -- E4: *in Rb,ib  -- E5: *in Rdw,ib  -- E6: *out ib,Rb  -- E7: *out ib,Rdw  call_1 =	"md:FF2m|J.:E8J",  jmp_1 =	"md:FF4m|J.:E9J", -- short: EB  -- EA: *jmp iw:idw  -- EB: jmp ib  -- EC: *in Rb,dx  -- ED: *in Rdw,dx  -- EE: *out dx,Rb  -- EF: *out dx,Rdw  -- F0: *lock  int1_0 =	"F1",  repne_0 =	"F2",  repnz_0 =	"F2",  rep_0 =	"F3",  repe_0 =	"F3",  repz_0 =	"F3",  -- F4: *hlt  cmc_0 =	"F5",  -- F6: test... mb,i; div... mb  -- F7: test... mdw,i; div... mdw  clc_0 =	"F8",  stc_0 =	"F9",  -- FA: *cli  cld_0 =	"FC",  std_0 =	"FD",  -- FE: inc... mb  -- FF: inc... mdw  -- misc ops  not_1 =	"m:F72m",  neg_1 =	"m:F73m",  mul_1 =	"m:F74m",  imul_1 =	"m:F75m",  div_1 =	"m:F76m",  idiv_1 =	"m:F77m",  imul_2 =	"rmdw:0FAFrM|rIdw:69rmI|rSdw:6BrmS|ridw:69rmi",  imul_3 =	"rmIdw:69rMI|rmSdw:6BrMS|rmidw:69rMi",  movzx_2 =	"rm/db:0FB6rM|rm/wb:0FB6rM|rm/dw:0FB7rM",  movsx_2 =	"rm/db:0FBErM|rm/wb:0FBErM|rm/dw:0FBFrM",  bswap_1 =	"rd:0FC8r",  bsf_2 =	"rmdw:0FBCrM",  bsr_2 =	"rmdw:0FBDrM",  bt_2 =	"mrdw:0FA3Rm|midw:0FBA4mU",  btc_2 =	"mrdw:0FBBRm|midw:0FBA7mU",  btr_2 =	"mrdw:0FB3Rm|midw:0FBA6mU",  bts_2 =	"mrdw:0FABRm|midw:0FBA5mU",  rdtsc_0 =	"0F31", -- P1+  cpuid_0 =	"0FA2", -- P1+  -- floating point ops  fst_1 =	"ff:DDD0r|xd:D92m|xq:DD2m",  fstp_1 =	"ff:DDD8r|xd:D93m|xq:DD3m|xt:DB7m",  fld_1 =	"ff:D9C0r|xd:D90m|xq:DD0m|xt:DB5m",  fpop_0 =	"DDD8", -- Alias for fstp st0.  fist_1 =	"xw:nDF2m|xd:DB2m",  fistp_1 =	"xw:nDF3m|xd:DB3m|xq:DF7m",  fisttp_1 =	"xw:nDF1m|xd:DB1m|xq:DD1m", -- SSE3  fild_1 =	"xw:nDF0m|xd:DB0m|xq:DF5m",  fxch_0 =	"D9C9",  fxch_1 =	"ff:D9C8r",  fxch_2 =	"fFf:D9C8r|Fff:D9C8R",  fucom_1 =	"ff:DDE0r",  fucom_2 =	"Fff:DDE0R",  fucomp_1 =	"ff:DDE8r",  fucomp_2 =	"Fff:DDE8R",  fucomi_1 =	"ff:DBE8r", -- P6+  fucomi_2 =	"Fff:DBE8R", -- P6+  fucomip_1 =	"ff:DFE8r", -- P6+  fucomip_2 =	"Fff:DFE8R", -- P6+  fcomi_1 =	"ff:DBF0r", -- P6+  fcomi_2 =	"Fff:DBF0R", -- P6+  fcomip_1 =	"ff:DFF0r", -- P6+  fcomip_2 =	"Fff:DFF0R", -- P6+  fucompp_0 =	"DAE9",  fcompp_0 =	"DED9",  fldcw_1 =	"xw:nD95m",  fstcw_1 =	"xw:n9BD97m",  fnstcw_1 =	"xw:nD97m",  fstsw_1 =	"Rw:n9BDFE0|xw:n9BDD7m",  fnstsw_1 =	"Rw:nDFE0|xw:nDD7m",  fclex_0 =	"9BDBE2",  fnclex_0 =	"DBE2",  fnop_0 =	"D9D0",  -- D9D1-D9DF: unassigned  fchs_0 =	"D9E0",  fabs_0 =	"D9E1",  -- D9E2: unassigned  -- D9E3: unassigned  ftst_0 =	"D9E4",  fxam_0 =	"D9E5",  -- D9E6: unassigned  -- D9E7: unassigned  fld1_0 =	"D9E8",  fldl2t_0 =	"D9E9",  fldl2e_0 =	"D9EA",  fldpi_0 =	"D9EB",  fldlg2_0 =	"D9EC",  fldln2_0 =	"D9ED",  fldz_0 =	"D9EE",  -- D9EF: unassigned  f2xm1_0 =	"D9F0",  fyl2x_0 =	"D9F1",  fptan_0 =	"D9F2",  fpatan_0 =	"D9F3",  fxtract_0 =	"D9F4",  fprem1_0 =	"D9F5",  fdecstp_0 =	"D9F6",  fincstp_0 =	"D9F7",  fprem_0 =	"D9F8",  fyl2xp1_0 =	"D9F9",  fsqrt_0 =	"D9FA",  fsincos_0 =	"D9FB",  frndint_0 =	"D9FC",  fscale_0 =	"D9FD",  fsin_0 =	"D9FE",  fcos_0 =	"D9FF",  -- SSE, SSE2, SSE3, SSSE3 ops  addsubpd_2 =	"rmo:660FD0rM",  addsubps_2 =	"rmo:F20FD0rM",  andnpd_2 =	"rmo:660F55rM",  andnps_2 =	"rmo:0F55rM",  andpd_2 =	"rmo:660F54rM",  andps_2 =	"rmo:0F54rM",  clflush_1 =	"x.:0FAE7m",  cmppd_3 =	"rmio:660FC2rMU",  cmpps_3 =	"rmio:0FC2rMU",  cmpsd_3 =	"rmio:F20FC2rMU",  cmpss_3 =	"rmio:F30FC2rMU",  comisd_2 =	"rmo:660F2FrM",  comiss_2 =	"rmo:0F2FrM",  cvtdq2pd_2 =	"rro:F30FE6rM|rx/oq:",  cvtdq2ps_2 =	"rmo:0F5BrM",  cvtpd2dq_2 =	"rmo:F20FE6rM",  cvtpd2ps_2 =	"rmo:660F5ArM",  cvtpi2pd_2 =	"rx/oq:660F2ArM",  cvtpi2ps_2 =	"rx/oq:0F2ArM",  cvtps2dq_2 =	"rmo:660F5BrM",  cvtps2pd_2 =	"rro:0F5ArM|rx/oq:",  cvtsd2si_2 =	"rr/do:F20F2DrM|rx/dq:",  cvtsd2ss_2 =	"rro:F20F5ArM|rx/oq:",  cvtsi2sd_2 =	"rm/od:F20F2ArM",  cvtsi2ss_2 =	"rm/od:F30F2ArM",  cvtss2sd_2 =	"rro:F30F5ArM|rx/od:",  cvtss2si_2 =	"rr/do:F20F2CrM|rx/dd:",  cvttpd2dq_2 =	"rmo:660FE6rM",  cvttps2dq_2 =	"rmo:F30F5BrM",  cvttsd2si_2 =	"rr/do:F20F2CrM|rx/dq:",  cvttss2si_2 =	"rr/do:F30F2CrM|rx/dd:",  haddpd_2 =	"rmo:660F7CrM",  haddps_2 =	"rmo:F20F7CrM",  hsubpd_2 =	"rmo:660F7DrM",  hsubps_2 =	"rmo:F20F7DrM",  lddqu_2 =	"rxo:F20FF0rM",  ldmxcsr_1 =	"xd:0FAE2m",  lfence_0 =	"0FAEE8",  maskmovdqu_2 = "rro:660FF7rM",  mfence_0 =	"0FAEF0",  movapd_2 =	"rmo:660F28rM|mro:660F29Rm",  movaps_2 =	"rmo:0F28rM|mro:0F29Rm",  movd_2 =	"rm/od:660F6ErM|mr/do:660F7ERm",  movddup_2 =	"rmo:F20F12rM",  movdqa_2 =	"rmo:660F6FrM|mro:660F7FRm",  movdqu_2 =	"rmo:F30F6FrM|mro:F30F7FRm",  movhlps_2 =	"rro:0F12rM",  movhpd_2 =	"rx/oq:660F16rM|xr/qo:660F17Rm",  movhps_2 =	"rx/oq:0F16rM|xr/qo:0F17Rm",  movlhps_2 =	"rro:0F16rM",  movlpd_2 =	"rx/oq:660F12rM|xr/qo:660F13Rm",  movlps_2 =	"rx/oq:0F12rM|xr/qo:0F13Rm",  movmskpd_2 =	"rr/do:660F50rM",  movmskps_2 =	"rr/do:0F50rM",  movntdq_2 =	"xro:660FE7Rm",  movnti_2 =	"xrd:0FC3Rm",  movntpd_2 =	"xro:660F2BRm",  movntps_2 =	"xro:0F2BRm",  movq_2 =	"rro:F30F7ErM|rx/oq:|xr/qo:660FD6Rm",  movsd_2 =	"rro:F20F10rM|rx/oq:|xr/qo:F20F11Rm",  movshdup_2 =	"rmo:F30F16rM",  movsldup_2 =	"rmo:F30F12rM",  movss_2 =	"rro:F30F10rM|rx/od:|xr/do:F30F11Rm",  movupd_2 =	"rmo:660F10rM|mro:660F11Rm",  movups_2 =	"rmo:0F10rM|mro:0F11Rm",  orpd_2 =	"rmo:660F56rM",  orps_2 =	"rmo:0F56rM",  pabsb_2 =	"rmo:660F381CrM",  pabsd_2 =	"rmo:660F381ErM",  pabsw_2 =	"rmo:660F381DrM",  packssdw_2 =	"rmo:660F6BrM",  packsswb_2 =	"rmo:660F63rM",  packuswb_2 =	"rmo:660F67rM",  paddb_2 =	"rmo:660FFCrM",  paddd_2 =	"rmo:660FFErM",  paddq_2 =	"rmo:660FD4rM",  paddsb_2 =	"rmo:660FECrM",  paddsw_2 =	"rmo:660FEDrM",  paddusb_2 =	"rmo:660FDCrM",  paddusw_2 =	"rmo:660FDDrM",  paddw_2 =	"rmo:660FFDrM",  palignr_3 =	"rmio:660F3A0FrMU",  pand_2 =	"rmo:660FDBrM",  pandn_2 =	"rmo:660FDFrM",  pause_0 =	"F390",  pavgb_2 =	"rmo:660FE0rM",  pavgw_2 =	"rmo:660FE3rM",  pcmpeqb_2 =	"rmo:660F74rM",  pcmpeqd_2 =	"rmo:660F76rM",  pcmpeqw_2 =	"rmo:660F75rM",  pcmpgtb_2 =	"rmo:660F64rM",  pcmpgtd_2 =	"rmo:660F66rM",  pcmpgtw_2 =	"rmo:660F65rM",  pextrw_3 =	"rri/do:660FC5rMU",  phaddd_2 =	"rmo:660F3802rM",  phaddsw_2 =	"rmo:660F3803rM",  phaddw_2 =	"rmo:660F3801rM",  phsubd_2 =	"rmo:660F3806rM",  phsubsw_2 =	"rmo:660F3807rM",  phsubw_2 =	"rmo:660F3805rM",  pinsrw_3 =	"rri/od:660FC4rMU|rmi/ow:",  pmaddubsw_2 =	"rmo:660F3804rM",  pmaddwd_2 =	"rmo:660FF5rM",  pmaxsw_2 =	"rmo:660FEErM",  pmaxub_2 =	"rmo:660FDErM",  pminsw_2 =	"rmo:660FEArM",  pminub_2 =	"rmo:660FDArM",  pmovmskb_2 =	"rr/do:660FD7rM",  pmulhrsw_2 =	"rmo:660F380BrM",  pmulhuw_2 =	"rmo:660FE4rM",  pmulhw_2 =	"rmo:660FE5rM",  pmullw_2 =	"rmo:660FD5rM",  pmuludq_2 =	"rmo:660FF4rM",  por_2 =	"rmo:660FEBrM",  prefetchnta_1 = "xb:n0F180m",  prefetcht0_1 = "xb:n0F181m",  prefetcht1_1 = "xb:n0F182m",  prefetcht2_1 = "xb:n0F183m",  psadbw_2 =	"rmo:660FF6rM",  pshufb_2 =	"rmo:660F3800rM",  pshufd_3 =	"rmio:660F70rMU",  pshufhw_3 =	"rmio:F30F70rMU",  pshuflw_3 =	"rmio:F20F70rMU",  psignb_2 =	"rmo:660F3808rM",  psignd_2 =	"rmo:660F380ArM",  psignw_2 =	"rmo:660F3809rM",  pslld_2 =	"rmo:660FF2rM|rio:660F726mU",  pslldq_2 =	"rio:660F737mU",  psllq_2 =	"rmo:660FF3rM|rio:660F736mU",  psllw_2 =	"rmo:660FF1rM|rio:660F716mU",  psrad_2 =	"rmo:660FE2rM|rio:660F724mU",  psraw_2 =	"rmo:660FE1rM|rio:660F714mU",  psrld_2 =	"rmo:660FD2rM|rio:660F722mU",  psrldq_2 =	"rio:660F733mU",  psrlq_2 =	"rmo:660FD3rM|rio:660F732mU",  psrlw_2 =	"rmo:660FD1rM|rio:660F712mU",  psubb_2 =	"rmo:660FF8rM",  psubd_2 =	"rmo:660FFArM",  psubq_2 =	"rmo:660FFBrM",  psubsb_2 =	"rmo:660FE8rM",  psubsw_2 =	"rmo:660FE9rM",  psubusb_2 =	"rmo:660FD8rM",  psubusw_2 =	"rmo:660FD9rM",  psubw_2 =	"rmo:660FF9rM",  punpckhbw_2 =	"rmo:660F68rM",  punpckhdq_2 =	"rmo:660F6ArM",  punpckhqdq_2 = "rmo:660F6DrM",  punpckhwd_2 =	"rmo:660F69rM",  punpcklbw_2 =	"rmo:660F60rM",  punpckldq_2 =	"rmo:660F62rM",  punpcklqdq_2 = "rmo:660F6CrM",  punpcklwd_2 =	"rmo:660F61rM",  pxor_2 =	"rmo:660FEFrM",  rcpps_2 =	"rmo:0F53rM",  rcpss_2 =	"rmo:F30F53rM",  rsqrtps_2 =	"rmo:0F52rM",  rsqrtss_2 =	"rmo:F30F52rM",  sfence_0 =	"0FAEF8",  shufpd_3 =	"rmio:660FC6rMU",  shufps_3 =	"rmio:0FC6rMU",  stmxcsr_1 =   "xd:0FAE3m",  ucomisd_2 =	"rmo:660F2ErM",  ucomiss_2 =	"rmo:0F2ErM",  unpckhpd_2 =	"rmo:660F15rM",  unpckhps_2 =	"rmo:0F15rM",  unpcklpd_2 =	"rmo:660F14rM",  unpcklps_2 =	"rmo:0F14rM",  xorpd_2 =	"rmo:660F57rM",  xorps_2 =	"rmo:0F57rM",}-------------------------------------------------------------------------------- Arithmetic ops.for name,n in pairs{ add = 0, ["or"] = 1, adc = 2, sbb = 3,		     ["and"] = 4, sub = 5, xor = 6, cmp = 7 } do  local n8 = n * 8  map_op[name.."_2"] = format(    "mr:%02XRm|rm:%02XrM|mI1dw:81%XmI|mS1dw:83%XmS|Ri1dwb:%02Xi|mi1dwb:81%Xmi",    1+n8, 3+n8, n, n, 5+n8, n)end-- Shift ops.for name,n in pairs{ rol = 0, ror = 1, rcl = 2, rcr = 3,		     shl = 4, shr = 5,          sar = 7, sal = 4 } do  map_op[name.."_2"] = format("m1:D1%Xm|mC1dwb:D3%Xm|mi:C1%XmU", n, n, n)end-- Conditional ops.for cc,n in pairs(map_cc) do  map_op["j"..cc.."_1"] = format("J.:0F8%XJ", n) -- short: 7%X  map_op["set"..cc.."_1"] = format("mb:n0F9%X2m", n)  map_op["cmov"..cc.."_2"] = format("rmdw:0F4%XrM", n) -- P6+end-- FP arithmetic ops.for name,n in pairs{ add = 0, mul = 1, com = 2, comp = 3,		     sub = 4, subr = 5, div = 6, divr = 7 } do  local nc = 192 + n * 8  local nr = nc + (n < 4 and 0 or (n % 2 == 0 and 8 or -8))  local fn = "f"..name  map_op[fn.."_1"] = format("ff:D8%02Xr|xd:D8%Xm|xq:DC%Xm", nc, n, n)  if n == 2 or n == 3 then    map_op[fn.."_2"] = format("Fff:D8%02XR|Fx2d:D8%XM|Fx2q:DC%XM", nc, n, n)  else    map_op[fn.."_2"] = format("Fff:D8%02XR|fFf:DC%02Xr|Fx2d:D8%XM|Fx2q:DC%XM", nc, nr, n, n)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -