[add %(sign extended%)] = add:加法 (符号扩展), {^rotate ([%w%-]+) bits left cl times$, [Shift arithmetically right without affecting flags] = sarx:算术右移(不影响标志), [Exchange RAX with register] = xchg:交换 RAX。
[packed single%-fp multiply] = mulps:打包单精度乘法。
[set byte if overflow] = seto:溢出则置1。
[decimal adjust al after addition] = daa:加法后十进制调整,-- ========== 数据传送 ========== [copy memory] = mov:数据传送, [Fused begative multiply%-subtract of scalar single precision floating%-point%-values] = vfnmsub:融合负乘减标量单精度。
[verify a segment for writing] = verw:验证段可写, [Push log2%(e%) onto the FPU register stack] = fldl2e:加载 log#8322;(e), [examine] = fxam:检查ST(0)类型, [Extract lowest set isolated bit] = blsi:提取最低置位 (BMI1),-- ========== 类型转换 ========== [convert byte to word] = cbw:字节扩展为字。
[Move data after swapping bytes] = movbe:字节序交换传送,? once$, [shift packed data right arithmetic] = psrad:打包双字算术右移, [jump near if not greater %(ZF=1 or SF~=OF%)] = jle:小于等于则跳转 (近), [unpack high packed data] = punpckh:解包高位数据, [push word or doubleword onto the stack %(sign extended%)] = push:入栈 (符号扩展), [Logical compare] = ptest:打包数据测试,-- ========== SSE/AVX 算术 ========== [add packed sp fp numbers from xmm2/mem to xmm1] = addps:打包单精度加法,-- ========== I/O 端口 ========== [input from port] = in:从端口输入, [call to interrupt procedure%-3:trap to debugger] = int 3:断点中断, [enter vmx root operation] = vmxon:进入VMX根操作。
[divide] = fdiv:浮点除法, [move from debug register] = mov:从调试寄存器读取。
ror:循环右移 CL 位}, [move packed single%-fp Low and duplicate] = movsldup:单精度低位复制, [remove es from the stack] = pop es:弹出到 ES, [Extract qword] = pextrq:提取四字, [Parallel bits deposit] = pdep:并行位分配 (BMI2)。
[Rotate right logical without affecting flags] = rorx:循环右移(不影响标志), {^add (%x+) to ax$。
rcl:带进位循环左移 1 位 (8位)}。
add:加法 (%1 到 %2)}。
[logical inclusive or %(sign%-extended%)] = or:按位或 (符号扩展)。
[Multiple packed signed dword integers] = pmulld:打包有符号双字乘法。
[packed single%-fp horizontal subtract] = hsubps:打包单精度水平减法, [compare real and pop register stack] = fcomp:浮点比较并出栈。
rol:循环左移 1 位}, [store real] = fst:存储浮点数, [scalar single%-fp multiply] = mulss:标量单精度乘法, [set byte if below or equal] = setbe:低于等于则置1, {^rotate nine bits left$, shl:逻辑左移 1 位 (×2)}, [Packed absolute value] = pabs:打包绝对值。
[packed double%-fp maximum] = maxpd:打包双精度最大值, [packed add with saturation] = padds:饱和打包加法, [bit%-wise logical and not of packed double%-precision fp values] = andnpd:双精度逻辑与非, {^unsigned divide by 2, {^signed multiply by 2, rcr:带进位循环右移 CL 位 (8位)}, [compare scalar single%-fp] = cmpss:标量单精度比较,-- ========== FPU 条件移动 ========== [floating%-point: move if below] = fcmovb:低于则浮点传送。
[undefined by the intel specification] = db:Intel未定义。
[packed double%-fp divide] = divpd:打包双精度除法。
[packed shuffle doubleword] = pshufd:打包双字混洗, [jump short if parity %(PF=1%)] = jp:偶校验则跳转, [ascii adjust al after addition] = aaa:加法后ASCII调整, [cosine] = fcos:余弦, [store control word] = fstcw:存储控制字, [invalidate tlb entry] = invlpg:使TLB条目无效, [unordered scalar double%-fp compare and set eflags] = ucomisd:无序标量双精度比较, [Move with zero%-extend] = movzx:零扩展传送。
[store string] = stos:串存储, [jump short if less or equal %(ZF=1 or SF~=OF%)] = jle:小于等于则跳转, [Clear AC flag in EFLAGS register] = clac:清除AC标志, xorps:单精度逻辑异或}, [save processor extended state] = xsave:保存扩展状态, [call to interrupt procedure%-4:if overflow flag=1] = into:溢出则中断 (OF=1),-- ========== 逻辑运算 ========== [logical and] = and:按位与。
[convert doubleword integer to scalar doubleprecision floating%-point value] = cvtsi2sd:整数转标量双精度, [jump short if overflow %(OF=1%)] = jo:溢出则跳转, [multiply] = fmul:浮点乘法, [unordered compare real] = fucom:无序浮点比较, [set byte if above] = seta:高于则置1, [Blend packed dwords] = vpblendd:混合打包双字, [shift double quadword left logical] = pslldq:双四字逻辑左移。
[packed multiply high] = pmulhw:打包字乘法高位。
[Swap GS base register] = swapgs:交换GS基址, {^rotate ([%w%-]+) bits right (%d+) times$, [jump near if parity %(PF=1%)] = jp:偶校验则跳转 (近),-- ========== SSE/AVX 转换 ========== [scalar signed int32 to single%-fp conversion] = cvtsi2ss:整数转标量单精度,? cl times$。
{^signed multiply by 2$, [scalar double%-fp subtract] = subsd:标量双精度减法, [Packed horitontal word minimum] = phminposuw:打包水平字最小值位置, [Compute Reciprocals of Packed Single%-Precision Floating%-Point Values] = rcpps:打包单精度倒数。
[floating%-point: move if not equal] = fcmovne:不相等则浮点传送。
[compute y%*log%(2%)%(x%+1%)] = fyl2xp1:计算 y×log#8322;(x+1), [convert 2 packed dp%-fp's from param 2 to packed signed dword in param1] = cvtpd2dq:打包双精度转整数。
{^rotate eight bits right cl times$, [write back and invalidate cache] = wbinvd:写回并使缓存失效, [add] = fadd:浮点加法,-- ========== FS/GS 基址 ========== [read fs base address] = rdfsbase:读取FS基址, [resume from system management mode] = rsm:从系统管理模式返回, [push \pi\ onto the fpu register stackload constant] = fldpi:加载 π, [scalar single%-fp subtract] = subss:标量单精度减法。
[ADX: Unsigned Integer Addition of Two Operands with Overflow Flag] = adox:带溢出无符号加法, shr:逻辑右移 (÷2)}。
[move scalar double%-fp] = movsd:传送标量双精度, [move if overflow] = cmovo:溢出则传送, [move 64 bits] = movq:传送64位, shr:逻辑右移 %1 位 (÷2^%1)},-- ========== FPU 控制 ========== [store status word] = fstsw:存储状态字, return mask] = pcmpestrm:显式长度串比较返回掩码,? cl times$,-- ========== FPU 常量 ========== [Push %+0%.0 onto the FPU register stack] = fldz:加载 0.0, add:加法 (0x%1 到 EAX)}, [Variable Bit Shift Left Logical] = vpsllv/shlx:可变位逻辑左移, [count the number of leading zero bits] = lzcnt:计算前导零位数, [reads a specified vmcs field %(32 bits%)] = vmread:读取VMCS字段, [floating%-point: move if not below] = fcmovnb:不低于则浮点传送, [multibyte nop] = nop:多字节空指令。
[increment stack%-top pointer] = fincstp:栈顶指针加1, [Fused multiple%-alnterating add/subtract of precision floating%-point%-values] = vfmaddsub:融合乘加减交替单精度, [push eflags register onto the stack] = pushfd:压入标志寄存器, [jump near if above %(CF=0 and ZF=0%)] = ja:高于则跳转 (近)。
[jump short if not sign %(SF=0%)] = jns:正数则跳转, [packed single%-fp to packed int32 conversion] = cvtps2dq:打包单精度转整数, [ascii adjust ax before division] = aad:除法前ASCII调整, [save processor extended state with compaction] = xsavec:压缩保存扩展状态, [add with carry %(sign extended%)] = adc:带进位加法 (符号扩展), {^unsigned divide by 2, [double precision shift left] = shld:双精度左移。
[Perform last round of an AES decryption flow] = aesdeclast:AES解密最后一轮。
[multiply packed unsigned doubleword integers] = pmuludq:打包无符号双字乘法, rcl:带进位循环左移 9 位}, [test] = ftst:浮点测试, {^bit%-wise logical or for single%-fp$, [store integer with truncation] = fisttp:截断存储为整数, [jump short if cx=0] = jcxz:CX为0则跳转, [Prefetch Data into Caches in Anticipation of a Write] = prefetchw:预取数据(写意图), [output toport] = out:向端口输出。
[move if not overflow] = cmovno:未溢出则传送, [convert word to doubleword] = cwde:字扩展为双字, cap)endreturn resultend endreturn nilend-- 居中标签local function centerOverlay() if not overlayLabel or not overlayPanel then return end overlayLabel.Left = math_floor((overlayPanel.Width - overlayLabel.Width) / 2) overlayLabel.Top = math_floor((overlayPanel.Height - overlayLabel.Height) / 2)end-- 创建覆盖层local function createOverlay() if overlayLabel or not sourcePanel then return overlayLabel ~= nil endoverlayPanel = createPanel(sourcePanel) overlayPanel.Name = TranslateOverlayPanel overlayPanel.Align = alClient overlayPanel.BevelOuter = bvNone overlayPanel.Color = sourcePanel.Color overlayPanel.Caption = overlayPanel.BringToFront() overlayPanel.OnResize = centerOverlayoverlayLabel = createLabel(overlayPanel) overlayLabel.Name = TranslateOverlay overlayLabel.Font.Color = 0xFF0000 overlayLabel.Font.Size = 10 overlayLabel.Caption = overlayLabel.Visible = true overlayLabel.AutoSize = true overlayLabel.Transparent = truereturn trueend-- 执行翻译local function doTranslate() if not sourcePanel thensourcePanel = findDescriptionPanel()if sourcePanel then createOverlay() else return end endif not overlayLabel thencreateOverlay()return endlocal currentText = sourcePanel.Caption if currentText ~= lastSourceText thenlastSourceText = currentTextlocal translated = translateText(currentText)overlayLabel.Caption = translated or currentText or centerOverlay() endoverlayPanel.BringToFront()end-- 延迟翻译local function delayedTranslate() if delayTimer thendelayTimer.destroy()delayTimer = nil enddelayTimer = createTimer(nil) delayTimer.Interval = 20 delayTimer.OnTimer = function(timer)timer.Enabled = falsetimer.destroy()delayTimer = nildoTranslate() endend-- 清理资源local function cleanup() if delayTimer then delayTimer.destroy(); delayTimer = nil end if disView and originalOnSelectionChange thendisView.OnSelectionChange = originalOnSelectionChange end if overlayLabel then overlayLabel.destroy(); overlayLabel = nil end if overlayPanel then overlayPanel.destroy(); overlayPanel = nil end sourcePanel = nil lastSourceText = end-- =============================================================================-- 5. 初始化-- =============================================================================cleanup()if disView then originalOnSelectionChange = disView.OnSelectionChange disView.OnSelectionChange = function(sender)if originalOnSelectionChange then pcall(originalOnSelectionChange, [byte mask write] = maskmovq:按字节掩码写入,-- ========== 原子操作 ========== [compare and exchange] = cmpxchg:比较并交换, [load string] = lods:串加载。
[move quadword from mmx technology to xmm register] = movq2dq:MMX到XMM, [packed double%-fp multiply] = mulpd:打包双精度乘法, [compare al with byte at es:edi and set status flag] = scasb:字符串扫描, [exchange memory with register] = xchg:交换 (内存/寄存器), [move byte mask to integer] = pmovmskb:提取字节符号掩码, [output to port] = out:向端口输出, [double precision shift right] = shrd:双精度右移, [loop according to ecx counter] = loope/loopz:相等则循环, [push byte onto the stack] = push:单字节入栈, [Convert single%-precision FP value to 16%-bit FP value] = vcvtps2ph:单精度转16位浮点。
-- ========== 标志位操作 ========== [set carry flag] = stc:置进位标志, [shuffle packed high words] = pshufhw:打包高位字混洗, [unpack high packed single%-fp] = unpckhps:解包高位单精度, [convert with truncation packed double%-precision floating%-point values to packed doubleword integers] = cvttpd2dq:打包双精度截断转整数,? (%d+) times$, [sine] = fsin:正弦, [floating%-point: move if unordered] = fcmovu:无序则浮点传送。
[jump short if not less %(greater or equal%) %(SF=OF%)] = jge:大于等于则跳转。
[bit test and reset] = btr:位测试并清0, [pop all general%-purpose registers] = popad:弹出所有寄存器。
[set byte if not overfloww] = setno:未溢出则置1。
[move aligned four packed single%-fp non temporal] = movntps:打包单精度非临时存储,-- ========== SSE/AVX 混合/置换 ========== [Blend packed double precision floating%-point values] = blendpd:混合打包双精度。
[pack with unsigned saturation] = packus:无符号饱和打包, [packed multiply and add] = pmaddwd:打包乘加, [compare string operands] = cmps:比较字符串, [jump near if not overflow %(OF=0%)] = jno:未溢出则跳转 (近), {^multiply by 2, [reverse divide] = fdivrp:浮点反向除法并出栈, [jump short if not overflow %(OF=0%)] = jno:未溢出则跳转, {^bit%-wise logical and for single fp$, [scan string] = scas:扫描字符串, [increment by 1] = inc:自增, [store fpu environment] = fstenv:保存FPU环境, [Fused negative multiply%-subtract of scalar double precision floating%-point%-values] = vfnmsub:融合负乘减标量双精度, [set byte if above or equal] = setae:高于等于则置1, [ascii adjust al after subtraction] = aas:减法后ASCII调整, [set byte if not parity] = setnp:奇校验则置1, [packed average] = pavg:打包平均值, {^bit%-wise logical and not for single%-fp$, orps:单精度逻辑或},? (%d+) times$, [signed multiply] = imul:有符号乘法,。
[Permute single%-prevision floating%-point values] = vpermps:置换单精度。
[Reset lowerst set bit] = blsr:清除最低置位 (BMI1), [pack with signed saturation] = packss:有符号饱和打包, [jump short if above %(ZF=0 and CF=0%)] = ja:高于则跳转 (无符号), sar:算术右移 CL 位}, [packed single%-fp divide] = divps:打包单精度除法。
[undefined instruction%(yes。
[Packed move with sign extend] = pmovsx:打包符号扩展传送, [add packed quadword integers] = paddq:打包四字加法, [packed shift right logical] = psrl:打包逻辑右移, [Fused negative multiply%-add of packed double precision floating%-point%-values] = vfnmadd:融合负乘加打包双精度, [integer subtraction with borrow] = sbb:带借位减法。
pattern in ipairs(GenericPatterns) dolocal captures = {string_match(lowerText。
[round to integer] = frndint:舍入为整数。
[Get mask up to lowest set bit] = blsmsk:获取最低置位掩码, [jump near if below or equal %(CF=1 or ZF=1%)] = jbe:低于等于则跳转 (近)。
[read gs base address] = rdgsbase:读取GS基址,-- ========== 内存屏障与非临时 ========== [Load Fence] = lfence:读取屏障, [load access rights byte] = lar:加载段访问权限, [interrupt return] = iret:中断返回。
[partial remainder] = fprem:部分余数, [store fence] = sfence:写入屏障, [Variable Blend Packed Single Precision Floating%-Point Values] = vblendvps:可变混合打包单精度。
[Maximum of packed signed dword integers] = pmaxsd:有符号打包双字最大值, [move if not equal/move if not zero] = cmovne/cmovnz:不相等则传送, [store interrupt descriptor table register] = sidt:存储IDTR, [jump short if above or equal %(CF=0%)] = jae:高于等于则跳转, [packed double%-precision fp divide] = divpd:打包双精度除法。
[packed double%-fp subtract] = subpd:打包双精度减法, rcr:带进位循环右移 1 位 (9位)}。
[Convert with Truncation Packed Single%-Precision FP Values to Packed Dword Integers] = cvttps2dq:打包单精度截断转整数, [free floating%-point register] = ffree:释放FPU寄存器, [Permute double%-prevision floating%-point values] = vpermpd:置换双精度, [jump near if overflow %(OF=1%)] = jo:溢出则跳转 (近), rcl:带进位循环左移 8 位}, pattern[1])}if #captures 0 thenlocal result = pattern[2]for i, {^rotate nine bits right cl times$, [place ss on the stack] = push ss:压入 SS, [Load double quadword non%-temporal aligned hint] = movntdqa:非临时对齐加载双四字, [adjust rpl field of segment selector] = arpl:调整段选择器RPL。
{^add (%x+) to eax %(sign extended%)$。
[convert scalar single%-precision floating%-point value to scalar double%-precision floating%-point value] = cvtss2sd:标量单精度转双精度, [compare real and set eflags] = fcomip:浮点比较设置EFLAGS并出栈, [packed single%-fp subtract] = subps:打包单精度减法, [writes a specified vmcs field %(32 bits%)] = vmwrite:写入VMCS字段, [scalar double%-fp minimum] = minsd:标量双精度最小值,-- ========== AVX 其他 ========== [Zero upper bits of YMM registers] = vzeroupper:清零YMM高位, [initialize floaring%-point unit] = finit:初始化FPU, [Maximum of packed word integers] = pmaxsw:有符号打包字最大值, [bit%-wise logical or of double%-fp] = orpd:双精度逻辑或,-- 循环移位 (8/9/16/17/32/33/64/65 bits) {^rotate eight bits left$, [bitwise logical or] = por:按位或, {^multiply by 2, [make stack frame for procedure parameters] = enter:建立堆栈帧, [load control word] = fldcw:加载控制字, [move doubleword] = movd:传送双字, [Packed horizontal add and saturate] = phaddsw:打包水平饱和加法, [Full doublewords element permutation] = vpermd:双字元素置换。
[Push log10%(2%) onto the FPU register stack] = fldlg2:加载 log#8321;#8320;(2)。
[Extract word] = pextrw:提取字, [store ah into flags] = sahf:AH写入标志位, [unpack low packed data] = punpckl:解包低位数据, [copy vmcs data to vmcs region in memory] = vmclear:清除VMCS数据, [Packed bit test] = ptest:打包位测试, shr:逻辑右移 1 位 (÷2)}, [Variable Bit Shift Right Logical] = vpsrlv/shrx:可变位逻辑右移, [Insert Byte] = pinsrb:插入字节, [jump near if greater %(ZF=0 and SF=OF%)] = jg:大于则跳转 (近),-- ========== 扩展状态 ========== [store streaming simd extension control/status] = stmxcsr:存储MXCSR, [one] = fld1:加载 1.0,-- ========== 串操作 ========== [move data from string to string] = movs:串传送, [packed single%-fp horizontal add] = haddps:打包单精度水平加法, [move one double%-fp and duplicate] = movddup:双精度复制传送, [write fs base address] = wrfsbase:写入FS基址, [Permute floating%-point values] = vpermil:置换浮点数, [load binary coded decimal] = fbld:加载BCD码, [compare packed double%-precision floating%-point values] = cmppd:打包双精度比较。
[cpu identification] = cpuid:获取CPU信息,? (%d+) times$, ^ .. string_lower(eng) .. $) thenreturn chnend end-- 模式匹配 for _,-- ========== FPU 比较 ========== [compare real] = fcom:浮点比较, [shuffle packed low words] = pshuflw:打包低位字混洗, [scalar single%-fp divide] = divss:标量单精度除法, [high level procedure exit] = leave:清理堆栈帧, [Filler] = db:填充字节, [Fused multiple%-subtract of scalar double precision floating%-point%-values] = vfmsub:融合乘减标量双精度, [set byte if below/carry] = setb/setc:低于则置1。
[Packed shuffle bytes] = pshufb:打包字节混洗, [stores the current vmcs pointer into memory] = vmptrst:存储VMCS指针, [Multiply and add signed and unsigned bytes] = pmaddubsw:有符号无符号字节乘加,-- ========== FPU 加载/存储 ========== [load floating point value] = fld:加载浮点数, {^near return to calling procedure and pop$, [check array index against bounds] = bound:数组越界检查, {^Add (%x+) to AL$, [packed shift right arithmetic] = psra:打包算术右移, return index] = pcmpestri:显式长度串比较返回索引, {^rotate ([%w%-]+) bits left (%d+) times$, [absolute value] = fabs:取绝对值, [packed double%-fp minimum] = minpd:打包双精度最小值, [convert packed single precision fp values to packed double precision fp values] = cvtps2pd:打包单精度转双精度, [convert quadword to octword] = cqo:四字扩展为八字。
[convert 2 packed dp%-fp] = cvtpd2dq:打包双精度转整数, [store fpu state] = fsave:保存FPU状态, rol:循环左移 %2 位}。
sar:算术右移 %1 位 (÷2^%1)}, [write gs base address] = wrgsbase:写入GS基址, andnps:单精度逻辑与非}, [Fused multiple%-alnterating add/subtract of packed double precision floating%-point%-values] = vfmaddsub:融合乘加减交替双精度, {^multiply by 2$, add:加法 (0x%1 到 AL)}, [packed shuffle word] = pshufw:打包字混洗, {^rotate nine bits left once$。
[set direction flag] = std:置方向标志, [packed subtract with saturation] = psubs:饱和打包减法, [Multiply Packed Signed Dword Integers and Store Low Result] = pmulld:打包有符号双字乘法。
-- ========== SSE/AVX 打包整数 ========== [packed add] = padd:打包加法,-- 返回指令 {^near return to calling procedure and pop (%d+) bytes from stack$,-- ========== SSE/AVX 比较 ========== [packed single%-fp compare] = cmpps:打包单精度比较, [Fused multiple%-add of packed double precision floating%-point%-values] = vfmadd:融合乘加打包双精度, [Fused negative multiply%-subtract of packed double precision floating%-point%-values] = vfnmsub:融合负乘减打包双精度。
[logical compare] = test:逻辑测试, [store single] = fst:存储单精度, [scalar single%-fp to signed int32 conversion] = cvtss2si:标量单精度转整数,? (%d+) times$, [move low quadword from xmm to mmx technology register] = movdq2q:XMM到MMX。
[floating%-point: move if below or equal] = fcmovbe:低于等于则浮点传送, [jump short if greater %(ZF=0 or SF=OF%)] = jg:大于则跳转 (有符号), [packed double%-fp horizontal subtract] = hsubpd:打包双精度水平减法。
}-- =============================================================================-- 3. 运行时状态-- =============================================================================local mv = getMemoryViewForm()local disView = mv and mv.DisassemblerViewlocal sourcePanel = nillocal overlayPanel = nillocal overlayLabel = nillocal lastSourceText = local delayTimer = nillocal originalOnSelectionChange = nil-- =============================================================================-- 4. 核心函数-- =============================================================================-- 查找描述面板local function findDescriptionPanel() if not disView or not disView.ControlCount then return nil end for i = 0, [unpack and interleave high packed double%-fp] = unpckhpd:解包高位双精度, [packed add unsigned with saturation] = paddus:无符号饱和加法, [Broadcast integer data] = vpbroadcast:广播整数, [leaves vmx operation] = vmxoff:退出VMX操作, [Fused multiply%-alternating subtract/add of packed double precision floating%-point%-values] = vfmsubadd:融合乘减加交替双精度, [move if above] = cmova:高于则传送。
add:加法 (0x%1 到 AX)}, [Accumulate CRC32 value] = crc32:累积CRC32值, [move packed double%-precision floating%-point using non%-temporal hint] = movntpd:打包双精度非临时存储, [packed unsigned integer byte minimum] = pminub:无符号打包字节最小值, [transactional abort] = xabort:事务中止, [jump near if equal %(ZF=1%)] = je/jz:相等则跳转 (近),-- ========== 系统指令 ========== [fast transistion to system call entry point] = sysenter:快速进入系统调用, [not specified by the intel documentation] = db:Intel未定义, {^rotate nine bits left cl times$。
[Packed move with zero extend] = pmovzx:打包零扩展传送, sal:算术左移 1 位 (×2)}, {^bit%-wise logical xor for single%-fp data$。
{^signed divide by 2, {^signed divide by 2$, [compute y%*log%(2%)x] = fyl2x:计算 y×log#8322;(x), [move scalar single%-fp] = movss:传送标量单精度, [Fused negative multiply%-add of scalar single precision floating%-point%-values] = vfnmadd:融合负乘加标量单精度, [fast system call] = syscall:快速系统调用。
[Return the Count of Number of Bits Set to 1] = popcnt:计算置1位数,-- ========== 比较与测试 ========== [compare two operands] = cmp:比较, {^rotate eight bits left once$, [move mask to integer] = movmskps:提取单精度符号掩码, {^rotate eight bits right$, [packed unsigned integer byte maximum] = pmaxub:无符号打包字节最大值, [bit test and set] = bts:位测试并置1,-- ========== FPU 数学运算 ========== [change sign] = fchs:符号取反, [Invalidate process%-context%-identifier] = invpcid:使进程上下文标识符无效, [store extended] = fstp:存储扩展精度并出栈, [extract word] = pextrw:提取字, [Perform the AES InvMixColumn transformation] = aesimc:AES逆列混合, [convert packed dword's to ps%-precision fpoint values] = cvtdq2ps:打包整数转单精度, [scalar single%-fp maximum] = maxss:标量单精度最大值, [Variable blend packed bytes] = vpblendvb:可变混合打包字节, [move if sign] = cmovs:负数则传送, [packed single%-fp to packed int32 conversion %(truncate%)] = cvttps2dq:打包单精度截断转整数, [input from port to string] = ins:从端口输入到串, [Read time%-stamp counter and processor ID] = rdtscp:读取时间戳和处理器ID。
{^rotate nine bits right$, [two's complement negation] = neg:取负, {^signed divide by 2, [decimal adjust al after subtraction] = das:减法后十进制调整, [move if below/ move if carry] = cmovb/cmovc:低于则传送, [compare and exchange 8 bytes] = cmpxchg8b:比较并交换8字节。
[packed signed integer word maximum] = pmaxsw:有符号打包字最大值。
? once$, %% .. i, [partial tangent] = fptan:正切, [a-zA-Z]) thenreturn ctrlendend end return nilend-- 翻译文本local function translateText(text) if not text or text == then return nil endlocal lowerText = string_lower(text)-- 精确匹配 for eng。
shr:逻辑右移 CL 位}, [move if parity even] = cmovp:偶校验则传送, [Push \pi\ onto the FPU register stackload constant] = fldpi:加载 π, [remove ds from the stack] = pop ds:弹出到 DS, {^rotate nine bits right once$, [Fused multiply%-alternating add/subtract of packed double precision floating%-point%-values] = vfmaddsub:融合乘加减交替双精度, [decrement by 1] = dec:自减, [bit%-wise logical or for single%-fp] = orps:单精度逻辑或, [packed single%-fp maximum] = maxps:打包单精度最大值,? cl times$, [Safermode multipurpose function] = getsec:安全模式多功能指令,-- ========== ADX/CRC32/随机数 ========== [ADX: Unsigned Integer Addition of Two Operands with Carry Flag] = adcx:带进位无符号加法, andnpd:双精度逻辑与非},-- ========== FMA 融合乘加 ========== [Fused multiply%-add of packed single%-precision floating%-point%-values] = vfmadd:融合乘加打包单精度。
[Gather Packed DP FP Values Using Signed Dword/Qword Indices] = vgatherdpd:聚集加载双精度。
[resume virtual machine managed by current vmcs] = vmresume:恢复虚拟机, [move double quadword using non%-temporal hint] = movntdq:双四字非临时存储, [read random numer] = rdrand:读取硬件随机数。
rol:循环左移 CL 位}, [Bit field extract] = bextr:位域提取 (BMI1), [Insert Scalar Single%-Precision Floating%-Point Value] = insertps:插入标量单精度, [move low packed single%-fp] = movlps:传送低位打包单精度, [convert scalar double%-precision floating%-point value to scalar single%-precision floating%-point value] = cvtsd2ss:标量双精度转单精度, [pop all general%-purpose registers %(invalid%)] = popad:弹出所有寄存器 (64位无效), [unordered scalar single%-fp compare and set eflags] = ucomiss:无序标量单精度比较, [jump short if not greater or equal %(SF~=OF%)] = jl:小于则跳转 (有符号), [Dot product of packed double precision floating%-point values] = dppd:双精度点积, [scalar single%-fp to signed int32 conversion %(truncate%)] = cvttss2si:标量单精度截断转整数。
[exchange register with register] = xchg:交换寄存器, [Lua] 纯文本查看 复制代码 -- =============================================================================-- ASM_Translator.lua - Cheat Engine 汇编指令中文翻译器-- =============================================================================-- 功能:将 CE 反汇编视图中的英文指令描述实时翻译为中文-- 作者:重构版本-- =============================================================================-- 性能优化:缓存常用函数local string_find = string.findlocal string_match = string.matchlocal string_gsub = string.gsublocal string_lower = string.lowerlocal math_floor = math.floorlocal pairs = pairslocal ipairs = ipairslocal pcall = pcall-- =============================================================================-- 1. 翻译数据表-- =============================================================================local OpcodesTab = { -- ========== 基础指令 ========== [no operation] = nop:空指令, [unsigned multiply] = mul:无符号乘法, sal:算术左移 %1 位 (×2^%1)}, [shuffle double%-fp] = shufpd:双精度混洗, [unsigned divide] = div:无符号除法, [Exchange] = xchg:交换数据, retf:远返回并弹出 %1 字节}, [square root] = fsqrt:平方根,-- ========== 算术运算 ========== [Add] = add:加法。
-- ========== SSE/AVX 数据传送 ========== [move aligned four packed single%-fp] = movaps:对齐传送打包单精度, [load unaligned integer 128 bits] = lddqu:加载未对齐128位整数。
[clear interrupt flag] = cli:禁止中断, {^bit%-wise logical xor for double%-fp data$。
[Permute single%-precision floating%-point elements] = vpermps:置换单精度元素, [Extract dword] = pextrd:提取双字, [Dot product of packed single precision floating%-point values] = dpps:单精度点积, [packed signed int32 to packed single%-fp conversion] = cvtdq2ps:打包整数转单精度, [set byte if greater or equal] = setge:大于等于则置1, [Packed SIGN] = psign:打包符号运算, [decrement stack%-top pointer] = fdecstp:栈顶指针减1。
[compute y%*log%(2%)%(x%+1%)] = fyl2xp1:计算 y×log#8322;(x+1), [jump near if not sign %(SF=0%)] = jns:正数则跳转 (近)。
[Extract packed floating%-point values] = vextractf128:提取打包浮点数, [move if above or equal/ move if not carry] = cmovae:高于等于则传送, sal:算术左移 (×2)}, [store integer] = fist:存储为整数,-- SIMD 逻辑 {^bit%-wise logical and not of packed double%-precision fp values$, {^unsigned divide by 2$, [jump short if not above %(ZF=1 or CF=1%)] = jbe:低于等于则跳转。
[Extract packed integer values] = vextracti128:提取打包整数, rcl:带进位循环左移 CL 位 (8位)}, [Packed Double%-FP Add/Subtract] = addsubpd:打包双精度加减交替, [scalar single%-fp square root reciprocal] = rsqrtss:标量单精度平方根倒数, [packed shift left logical] = psll:打包逻辑左移, [Push log e%(2%) onto the FPU register stack] = fldln2:加载 ln(2), [Permute integer values] = vpermd:置换整数, [logical and %(sign extended%)] = and:按位与 (符号扩展), [load integer] = fild:加载整数转浮点。
[scalar double%-fp maximum] = maxsd:标量双精度最大值, ror:循环右移 1 位}, [compare scalar ordered double%-precision floating point values and set eflags] = comisd:标量双精度比较设置EFLAGS, [move 64 bits non temporal] = movnti:64位非临时传送, [move unaligned four packed single%-fp] = movups:未对齐传送打包单精度。
add:加法 (0x%1 到 RAX)}。
{^unsigned divide by 2。
[jump near if not equal %(ZF=0%)] = jne/jnz:不相等则跳转 (近), [Fused multiple%-add of scalar double precision floating%-point%-values] = vfmadd:融合乘加标量双精度, [extract packed double%-precision floating%-point sign mask] = movmskpd:提取双精度符号掩码, [push all general%-purpose registers] = pushad:压入所有寄存器, {^add (%w+) to (%w+)$, [restore processor extended status supervisor] = xrstors:恢复扩展状态(管理模式),-- ========== 描述符表 ========== [load global descriptor table register] = lgdt:加载GDTR, [prefetch] = prefetch:预取数据, orpd:双精度逻辑或}。
[Fused multiple%-alnterating subtract/add of packed double precision floating%-point%-values] = vfmsubadd:融合乘减加交替双精度, [clear carry flag] = clc:清进位标志, [unpack low packed single%-fp] = unpcklps:解包低位单精度, [two] = fld:加载常量, [set byte if less] = setl:小于则置1, [set byte if not sign] = setns:正数则置1, [Perform one round of an AES decryption flow] = aesdec:AES解密一轮, add:加法 (0x%1 到 RAX, [loads the current vmcs pointer from memory] = vmptrld:加载VMCS指针。
[bit test and complement] = btc:位测试并取反, [scalar double%-precision%-fp divide] = divsd:标量双精度除法, [save processor extended state supervisor] = xsaves:保存扩展状态(管理模式), [Minimum of packed signed byte integers] = pminsb:有符号打包字节最小值, [high to low packed single%-fp] = movhlps:高位到低位单精度。
[set byte if not equal] = setne/setnz:不相等则置1, [set byte if greater] = setg:大于则置1。
[output string to port] = outs:串输出到端口, [Fused multiple%-subtract of packed single precision floating%-point%-values] = vfmsub:融合乘减打包单精度。
-- ========== SSE/AVX 舍入 ========== [Round packed double precision floating%-point values] = roundpd:舍入打包双精度。
[store machine status word] = smsw:存储机器状态字。
[packed single%-fp minimum] = minps:打包单精度最小值, sender) enddelayedTranslate() endsourcePanel = findDescriptionPanel() if sourcePanel thencreateOverlay()doTranslate() endend 。
[packed signed integer word minimum] = pminsw:有符号打包字最小值, [scalar double%-fp multiply] = mulsd:标量双精度乘法, [Fused negative multiply%-add of scalar double precision floating%-point%-values] = vfnmadd:融合负乘加标量双精度, [integer subtraction with borrow %(sign extended%)] = sbb:带借位减法 (符号扩展), [Conditional SIMD Integer Packed Loads and Stores] = vpmaskmov:条件打包整数加载/存储, [byte swap] = bswap:字节序交换, [reverse subtract] = fsubr:浮点反向减法, [fast transistion from system call entry point] = sysexit:快速从系统调用返回。
[Carry%-less multiplication quadword] = pclmulqdq:无进位四字乘法, [convert with truncation scalar double%-precision floating point value to signed doubleword integer] = cvttsd2si:标量双精度截断转整数, [convert ps%-precision fpoint values to packed dword] = cvtps2dq:打包单精度转整数, [Fused negative multiply%-subtract of packed single precision floating%-point%-values] = vfnmsub:融合负乘减打包单精度。
-- ========== BMI2 无标志位操作 ========== [Unsigned multiple without affecting flags] = mulx:无符号乘法(不影响标志)。
return mask] = pcmpistrm:隐式长度串比较返回掩码, [Fused multiple%-add of packed single precision floating%-point%-values] = vfmadd:融合乘加打包单精度, [read performance%-monitoring counters] = rdpmc:读取性能监控计数器, [jump near if not parity %(PF=0%)] = jnp:奇校验则跳转 (近), [packed subtract] = psub:打包减法, [read time%-stamp counter] = rdtsc:读取时间戳计数器, [load effective address] = lea:加载有效地址,-- ========== 条件传送 (CMOVcc) ========== [move if equal/move if zero] = cmove/cmovz:相等则传送, [convert doubleword to quadword] = cdq:双字扩展为四字, [jump short if equal %(ZF=1%)] = je/jz:相等则跳转, [packed double%-fp horizontal add] = haddpd:打包双精度水平加法, [compare scalar double%-precision floating%-point values] = cmpsd:标量双精度比较, [add with carry] = adc:带进位加法,-- ========== AES 加密 ========== [AES round key generation assist] = aeskeygenassist:AES轮密钥生成, [scale] = fscale:比例缩放。
sal:算术左移 CL 位}, [verify a segment for reading] = verr:验证段可读, [permute double%-precision floating%-point values] = vpermpd:置换双精度。
[not defined by the intel documentation] = db:Intel未定义, [extract exponent and significand] = fxtract:提取指数和尾数,-- ========== VMX 虚拟化 ========== [call to vm monitor by causing vm exit] = vmcall:调用虚拟机监控器。
[convert packed double precision fp values to packed single precision fp values] = cvtpd2ps:打包双精度转单精度。
cap in ipairs(captures) doresult = string_gsub(result, [add packed double%-precision floating%-point values from xmm2/mem to xmm1] = addpd:打包双精度加法, {^rotate ([%w%-]+) bits right once$, [free floating%-point register and pop %(might not work%)] = ffreep:释放FPU寄存器并出栈,符号扩展)}, [move low packed double%-precision floating%-point value] = movlpd:传送低位双精度, {^rotate ([%w%-]+) bits right cl times$。
[Extract byte] = pextrb:提取字节。
[load machine status word] = lmsw:加载机器状态字。
[read from model specific register] = rdmsr:读取MSR寄存器, [save processor extended status optimized] = xsaveopt:优化保存扩展状态,-- ========== 调用与返回 ========== [call procedure] = call:调用函数。
[packed compare for greater than] = pcmpgt:打包大于比较, [Maximum of packed signed byte integers] = pmaxsb:有符号打包字节最大值, [floating%-point: move if not below or equal] = fcmovnbe:不低于等于则浮点传送, [shift double quadword right logical] = psrldq:双四字逻辑右移, [Packed Single%-FP Add/Subtract] = addsubps:打包单精度加减交替, [move if below or equal] = cmovbe:低于等于则传送。
return index] = pcmpistri:隐式长度串比较返回索引, [far return to calling procedure] = retf:函数返回 (远), [floating%-point: move if equal] = fcmove:相等则浮点传送, [bit%-wise logical and not for single%-fp] = andnps:单精度逻辑与非, [Broadcast floating%-point%-data] = vbroadcast:广播浮点数, [bit%-wise logical xor for double%-fp data] = xorpd:双精度逻辑异或, [convert ps%-precision fpoint values to packed dword's ] = cvtps2dq:打包单精度转整数, [return from fast system call] = sysret:从快速系统调用返回。
[insert word] = pinsrw:插入字, {^rotate ([%w%-]+) bits left once$, [Perform last round of an AES encryption flow] = aesenclast:AES加密最后一轮,-- ========== 杂项 ========== [table look%-up translation] = xlat:查表转换,-- ========== SSE/AVX 混洗 ========== [shuffle single%-fp] = shufps:单精度混洗, [load task register] = ltr:加载任务寄存器, [place es on the stack] = push es:压入 ES, [Minimum of packed dword integers] = pminsd:有符号打包双字最小值, [Permute double%-precision floating%-point values] = vpermpd:置换双精度, [move if greater or equal] = cmovge:大于等于则传送,-- ========== TSX 事务内存 ========== [Transactional Begin] = xbegin:事务开始, sar:算术右移 (÷2)}, [signed divide] = idiv:有符号除法。
[remove ss from the stack] = pop ss:弹出到 SS, [Extract packed single precision floating%-point value] = extractps:提取单精度, {^signed multiply by 2, [move if less] = cmovl:小于则传送, [packed single%-fp square root] = sqrtps:打包单精度平方根, [Transactional end] = xend:事务结束, [jump near if below/carry %(CF=1%)] = jb/jc:低于则跳转 (近), [jump short if below/carry %(CF=1%)] = jb/jc:低于则跳转 (无符号), [launch virtual machine managed by current vmcs] = vmlaunch:启动虚拟机。
{^rotate eight bits right once$。
[add and pop] = faddp:浮点加法并出栈, [jump near if less %(SF~=OF%)] = jl:小于则跳转 (近)。
[Compare packed qword data for equal] = pcmpeqq:打包四字相等比较, [Packed compare for equal] = pcmpeq:打包相等比较, [Blend packed single precision floating%-point values] = blendps:混合打包单精度, [convert scalar double%-precision floating%-point value to doubleword integer] = cvtsd2si:标量双精度转整数, [write to model specific register] = wrmsr:写入MSR寄存器, [permute single%-precision floating%-point values] = vpermps:置换单精度。
-- ========== 控制/调试寄存器 ========== [move from control register] = mov:从控制寄存器读取, [complement carry flag] = cmc:翻转进位标志。
[Monitor wait] = mwait:监控等待, [packed compare for equal] = pcmpeq:打包相等比较, [move to control register] = mov:写入控制寄存器, [load interupt descriptor table register] = lidt:加载IDTR, [store task register] = str:存储任务寄存器, [Insert packed integer values] = vinserti128:插入打包整数, [Permute single%-precision floating%-point values] = vpermps:置换单精度, [Convert 16%-bit FP values to single%-precision FP values] = vcvtph2ps:16位浮点转单精度, [Fused multiple%-subtract of packed double precision floating%-point%-values] = vfmsub:融合乘减打包双精度, [push st%(i%) onto the fpu register stack] = fld:复制ST(i)到栈顶, [Compute Reciprocal of Scalar Single%-Precision Floating%-Point Values] = rcpss:标量单精度倒数, [convert two packed signed dwords from param2 to two packed dp%-floating point values in param1] = cvtdq2pd:打包整数转双精度, [partial arctangent] = fpatan:反正切。
[move with sign%-extension] = movsx:符号扩展传送, [call to interrupt procedure] = int:触发中断, [Compare packed data for greater than] = pcmpgtq:打包四字大于比较,-- 移位指令 {^multiply by 2, [jump short if not parity %(PF=0%)] = jnp:奇校验则跳转, [Prefetch Vector Data Into Caches with Intent to Write and T1 Hint] = prefetchwt1:预取向量数据。
{^far return to calling procedure and pop (%d+) bytes from stack$, [load fpu environment] = fldenv:加载FPU环境, [compare integer] = ficom:浮点与整数比较, [Minimum of packed word integers] = pminuw:无符号打包字最小值。
[set up monitor address] = monitor:设置监控地址。
[jump near if sign %(SF=1%)] = js:负数则跳转 (近)。
[place cs on the stack] = push cs:压入 CS, [Shift logically left without affecting flags] = shlx:逻辑左移(不影响标志),-- ========== SSE/AVX 逻辑 ========== [bit%-wise logical and of xmm2/m128 and xmm1] = pand:打包逻辑与。
[compute y%*log%(2%)x] = fyl2x:计算 y×log#8322;(x)。
[logical exclusive or] = xor:按位异或, rcl:带进位循环左移 CL 位 (9位)}。
[one's complement negation] = not:按位取反, [pop a value from the stack] = pop:弹出数据。
[Variable blend packed double precision floating%-point values] = vblendvpd:可变混合打包双精度。
-- ========== 条件设置 (SETcc) ========== [set byte if equal] = sete/setz:相等则置1, [store doubleword using non%-temporal hint] = movnti:双字非临时存储, [move quadword] = movq:传送四字,? once$, [jump far] = jmp far:远跳转。
[logical inclusive or] = or:按位或。
符号扩展)}, [packed single%-fp square root reciprocal] = rsqrtps:打包单精度平方根倒数, add:加法 (0x%1 到 EAX, [Packed compare explicit length string, [Insert packed floating%-point values] = vinsertf128:插入打包浮点数, [Fused multiple%-alnterating subtract/add of precision floating%-point%-values] = vfmsubadd:融合乘减加交替单精度, [restore fp and mmx state and streaming simd extension state] = fxrstor:恢复FPU/MMX/SSE状态, [packed multiply high unsigned] = pmulhuw:打包无符号字乘法高位, andps:单精度逻辑与}, ^ .. eng .. $) or string_find(lowerText, [Round packed single precision floating%-point values] = roundps:舍入打包单精度, [move 32 bits] = movd:传送32位。
[floating%-point: compare real and set eflags] = fcomi:浮点比较设置EFLAGS。
[move packed single%-fp high and duplicate] = movshdup:单精度高位复制, [set byte if sign] = sets:负数则置1, {^add (%x+) to rax %(sign extended%)$, [Fused multiply%-alternating add/subtract of packed single precision floating%-point%-values] = vfmaddsub:融合乘加减交替单精度。
[initialize floating%-point unit] = finit:初始化FPU, [load streaming simd extension control/status] = ldmxcsr:加载MXCSR。
-- ========== 堆栈操作 ========== [push word or doubleword onto the stack] = push:数据入栈, [ascii adjust ax after multiply] = aam:乘法后ASCII调整, [halt] = hlt:处理器停机, [load far pointer] = lfs/lgs/lss:加载远指针, [move low packed double%-fp] = movlpd:传送低位打包双精度, [set byte if parity] = setp:偶校验则置1,-- ========== AVX Gather ========== [Gather Packed SP FP values Using Signed Dword/Qword Indices] = vgatherdps:聚集加载单精度, [jump near if not less %(SF=OF%)] = jge:大于等于则跳转 (近), [Zero all YMM registers] = vzeroall:清零所有YMM, [scalar double%-fp square root] = sqrtsd:标量双精度平方根, rcr:带进位循环右移 9 位}, [count the number of trailing zero bits] = tzcnt:计算尾部零位数, [clear task%-switched flag in cr0] = clts:清除CR0任务切换标志, sar:算术右移 1 位 (÷2)}。
[compute 2^x%-1] = f2xm1:计算 2^x-1, [clear exceptions] = fclex:清除浮点异常, [bit%-wise logical and for single fp] = andps:单精度逻辑与, ror:循环右移 %2 位}。
rcr:带进位循环右移 CL 位 (9位)}, [packed sum of absolute differences] = psadbw:打包绝对差值之和, [Pack with unsigned saturation] = packusdw:无符号饱和打包。
[memory fence] = mfence:内存屏障, [Fused multiple%-subtract of scalar single precision floating%-point%-values] = vfmsub:融合乘减标量单精度。
[Packed multiply high with round and scale] = pmulhrsw:打包乘高位舍入缩放, [Shift logically right without affecting flags] = shrx:逻辑右移(不影响标志), [reverse substract] = fsubr:浮点反向减法, [add the lower sp fp number from xmm2/mem to xmm1%.] = addss:标量单精度加法。
this one really excists%.%.%)] = ud2:未定义指令, [Set value of extended control register] = xsetbv:设置扩展控制寄存器值, rcr:带进位循环右移 8 位}, [move unaligned double quadword] = movdqu:未对齐传送双四字。
[Conditional SIMD packed loads and stores] = vmaskmov:条件打包浮点加载/存储, [substract] = fsub:浮点减法, [read random SEED] = rdseed:读取随机种子。
-- ========== 缓存/TLB ========== [invalidate internal caches] = invd:使缓存失效, [logical and not] = pandn:按位与非, [restore fpu state] = frstor:恢复FPU状态,? cl times$, [Variable bit shift right arithmetic] = vpsrav/sarx:可变位算术右移, {^rotate eight bits left cl times$, chn in pairs(OpcodesTab) doif string_find(text。
shl:逻辑左移 (×2)}。
[jump short if sign %(SF=1%)] = js:负数则跳转。
{^add (%x+) to rax$, [bit scan reverse] = bsr:反向位扫描, [Packed horizontal add] = phadd:打包水平加法, {^signed divide by 2, [Permute double%-precision floating%-point elements] = vpermpd:置换双精度元素, [move high packed double%-precision floating%-point value] = movhpd:传送高位双精度, [Push %+1%.0 onto the FPU register stack] = fld1:加载 1.0,-- ========== MMX ========== [empty mmx#8482; state] = emms:清空MMX状态, [Packed compare implicit length string, [wait] = fwait:等待FPU完成, xorpd:双精度逻辑异或}, ret:近返回并弹出字节}, [bit%-wise logical xor for single%-fp data] = xorps:单精度逻辑异或, [move if not sign] = cmovns:正数则传送。
[Blend packed words] = pblendw:混合打包字, [Packed compare implicit length string, [near return to calling procedure] = ret:函数返回 (近), [Packed compare explicit length string。
[bit scan forward] = bsf:正向位扫描, rcl:带进位循环左移 1 位 (9位)},-- ========== SSE/AVX 插入/提取 ========== [Insert dword] = pinsrd:插入双字。
[store bcd integer and pop] = fbstp:存储BCD并出栈, [Get value of extended control register] = xgetbv:获取扩展控制寄存器值, [Zero high bits starting with specified bit position] = bzhi:清除高位, shl:逻辑左移 %1 位 (×2^%1)}, [Packed align right] = palignr:打包右对齐, [move to debug register] = mov:写入调试寄存器, [compare real and pop register stack twice] = fcompp:浮点比较并出栈两次, [jump short if not equal %(ZF=0%)] = jne/jnz:不相等则跳转,}-- =============================================================================-- 2. 动态匹配模式-- =============================================================================local GenericPatterns = { -- 加法指令 {^add (%x+) to eax$, {^signed multiply by 2, [Push log2%(10%) onto the FPU register stack] = fldl2t:加载 log#8322;(10), [Packed horizontal subtract] = phsub:打包水平减法, [clear direction flag] = cld:清方向标志, [packed doubleprecision%-fp to packed dword conversion %(truncate%)] = cvttpd2dq:打包双精度截断转整数, disView.ControlCount - 1 dolocal ctrl = disView.getControl(i)if ctrl.ClassName == TPanel thenlocal cap = ctrl.Caption or if cap ~= and string_match(cap, [save fp and mmx state and streaming simd extension state] = fxsave:保存FPU/MMX/SSE状态,? once$, ret:近返回并弹出 %1 字节}。
[Round scalar single precision floating%-point values] = roundss:舍入标量单精度, [Perform one round of an AES encryption flow] = aesenc:AES加密一轮, [Move doubleword to quadword with signextension] = movsxd:双字符号扩展为四字。
[load segment limit] = lsl:加载段限制, [load local descriptor table register] = lldt:加载LDTR, [load status flag into ah register] = lahf:标志位加载到AH, [Qwords element permutation] = vpermq:四字元素置换, [scalar single%-fp square root] = sqrtss:标量单精度平方根, [move unaligned packed double%-fp] = movupd:未对齐传送打包双精度。
[Test if in transactional execution] = xtest:测试是否在事务中, [subtract and pop from stack] = fsubp:浮点减法并出栈, [packed double%-fp square root] = sqrtpd:打包双精度平方根,-- ========== 位操作 ========== [bit test] = bt:位测试。
[jump near if above or equal %(CF=0%)] = jae:高于等于则跳转 (近),-- ========== 循环指令 ========== [loop according to ecx counting] = loop:循环 (ECX-1), [packed multiply low] = pmullw:打包字乘法低位, [exchange and add] = xadd:交换并加法, [move aligned double quadword] = movdqa:对齐传送双四字, [store double] = fst:存储双精度, [store global descriptor table register] = sgdt:存储GDTR, [Fused multiple%-add of scalar single precision floating%-point%-values] = vfmadd:融合乘加标量单精度, [move if not parity/move if parity odd] = cmovnp:奇校验则传送, [scalar single%-fp minimum] = minss:标量单精度最小值。
[store local descriptor table register] = sldt:存储LDTR,-- ========== 跳转指令 ========== [jump short] = jmp:短跳转, [scalar ordered single%-fp compare and set eflags] = comiss:标量单精度比较设置EFLAGS。
[set interrupt flag] = sti:允许中断, [pop stack into eflags register] = popfd:弹出到标志寄存器, [set byte if less or equal] = setle:小于等于则置1, [store fp and mmx state and streaming simd extension state] = fxsave:保存FPU/MMX/SSE状态, [push all general%-purpose registers %(invalid%) %(invalid%)] = pushad:压入所有寄存器 (64位无效), [floating%-point: move if not unordered] = fcmovnu:有序则浮点传送, [Insert qword] = pinsrq:插入四字。
[jump near] = jmp:近跳转, [exchange register contents] = fxch:交换FPU寄存器。
[subtract] = sub:减法, [Compute multiple packed sums of absolute difference] = mpsadbw:多重绝对差值之和, [Fused negative multiply%-add of packed single%-precision floating%-point%-values] = vfnmadd:融合负乘加打包单精度, [move aligned packed double%-fp values] = movapd:对齐传送打包双精度, {^bit%-wise logical or of double%-fp$。
rcr:带进位循环右移 1 位 (8位)}, [packed subtract unsigned with saturation] = psubus:无符号饱和减法, [Fused multiply%-alternating subtract/add of packed single precision floating%-point%-values] = vfmsubadd:融合乘减加交替单精度, [restore processor extended state] = xrstor:恢复扩展状态, [place ds on the stack] = push ds:压入 DS, shl:逻辑左移 CL 位}, [Maximum of packed unsigned dword integers] = pmaxud:无符号打包双字最大值, [store selected bytes of double quadword] = maskmovdqu:按掩码存储双四字, [convert packed dword] = cvtdq2ps:打包整数转单精度。
[move if greater] = cmovg:大于则传送, [move if less or equal] = cmovle:小于等于则传送, [sine and cosine] = fsincos:正弦和余弦。
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
