これは、Forth のようなスレッド化されたコード コマンドであり、スタックの最上位にあることを?確認し ( )、コマンド ポインターを逆参照して次のコマンドをスキップします ( )。0ediebx
_ifleap:
mov eax, [edi]
add edi, 4
test eax, eax
cmovz ebx, [ebx]
mov ebx, [ebx]
jmp [ebx + 12]
これを最適化する方法はありますか?より少ない行、より高速な実行、より優れた CPU サポート? アイデアは、[edi]ゼロかどうかを確認し、それmov ebx, [ebx]以外の場合は何もしないことです。4 ずつインクリメントするedi必要があります (これは一種のスタック ポインターです)。もちろんcmovzi686 のみですが、ラベルを使用するのはこのタスクにはやり過ぎのようです。
(はい、私は x86 命令セットのリファレンスを持っていますが、それは巨大で、マスターするのに長い時間がかかりますが、アセンブリはたまにしか使用しないので、専門家のアドバイスを探します。)