这是线程代码命令,如Forth ?
,check 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,但使用标签对于此任务来说似乎有些过分。
(是的,我有x86指令集参考,但它很大,需要很长时间才能掌握,但我偶尔只使用汇编,所以我寻求专家意见。)