这是线程代码命令,就像 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指令集参考,但它很大,需要很长时间才能掌握,但我只是偶尔使用汇编,所以我寻求专家建议。)