0

这是线程代码命令,就像 Forth 一样?,检查是否0在堆栈顶部 ( edi) 并通过取消引用命令指针 ( ebx) 来跳过下一个命令。

_ifleap:
   mov eax, [edi]
   add edi, 4
   test eax, eax
   cmovz ebx, [ebx]
   mov ebx, [ebx]
   jmp [ebx + 12]

有没有办法优化这个?更少的行,更快的执行,更好的 CPU 支持?想法是检查是否[edi]为零,mov ebx, [ebx]否则什么也不做。edi必须增加 4(这是一种堆栈指针)。当然cmovz只是 i686,但使用 label 对于这项任务来说似乎有点过分了。

(是的,我有x86指令集参考,但它很大,需要很长时间才能掌握,但我只是偶尔使用汇编,所以我寻求专家建议。)

4

0 回答 0