私は PC Assembly Language を読み終え、Assembly での RC4 暗号化の実装に取り組んでいました。私が理解できないのは、その理由です
mov eax, [edx+ecx]
動作しますが
mov eax, [edx-ecx]
しません。インライン アセンブラから、次のエラー メッセージが表示されます。
「第 2 オペランド」の非定数式
どういう意味ですか?前もって感謝します。
私は PC Assembly Language を読み終え、Assembly での RC4 暗号化の実装に取り組んでいました。私が理解できないのは、その理由です
mov eax, [edx+ecx]
動作しますが
mov eax, [edx-ecx]
しません。インライン アセンブラから、次のエラー メッセージが表示されます。
「第 2 オペランド」の非定数式
どういう意味ですか?前もって感謝します。
次のオペコードがあります。
mov eax, [edx+ecx]
そして、以下から組み立てることができるオペコードがあります。
mov eax, [edx-CONSTANT]
アセンブラーは通常のオペコードを使用しますが、アセンブリ中に定数を否定するためです。
mov eax, [edx+(-CONSTANT)]
ただし、次のオペコードはありません。
mov eax, [edx-ecx]
基本的に、存在しない命令を実行しようとしています。
以下に、x86 アドレッシング モードの概要を示します。「登録マイナス登録」形式がないことに注意してください: Wikipedia。
ecx回避策として、使用する内容を無効にすることができます[edx+ecx](後で元の値が必要な場合は、無効にする必要がある場合があります)。
そのようなオフセットで減算することは許可されていません。その目的は、メモリバッファのベースをポイントして、それにオフセットを追加できるようにすることです。減算すると、指定されたメモリバッファからあなたを引き出します...