これは、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]
以外の場合は何もしないことです。4 ずつインクリメントするedi
必要があります (これは一種のスタック ポインターです)。もちろんcmovz
i686 のみですが、ラベルを使用するのはこのタスクにはやり過ぎのようです。
(はい、私は x86 命令セットのリファレンスを持っていますが、それは巨大で、マスターするのに長い時間がかかりますが、アセンブリはたまにしか使用しないので、専門家のアドバイスを探します。)