一連のx86
命令を分析していて、次のコードと混同してしまいました。
135328495: sbb edx, edx
135328497: neg edx
135328499: test edx, edx
135328503: jz 0x810f31c
sbb
が に等しいdes = des - (src + CF)
、つまり に何らかの形で最初に入れ-CF
られた命令であることを理解していedx
ます。それからnegtive
-CF
、CF
そしてゼロに等しいtest
かどうか??CF
ただし、jz
チェック フラグZF
ではなくCF
! では、基本的に上記のコード シーケンスは何をしようとしているのでしょうか。これは、バージョンx86
によって生成される正当な命令シーケンスです。g++
4.6.3
C++
コードは実際にはbotanプロジェクトからのものです。全体的なアセンブリ コード (Botan RSA 復号化の例) は、こちらにあります。逆アセンブルされたコードには、このような命令シーケンスが非常に多くあります。