2

私は PC Assembly Language を読み終え、Assembly での RC4 暗号化の実装に取り​​組んでいました。私が理解できないのは、その理由です

mov eax, [edx+ecx]

動作しますが

mov eax, [edx-ecx]

しません。インライン アセンブラから、次のエラー メッセージが表示されます。

「第 2 オペランド」の非定数式

どういう意味ですか?前もって感謝します。

4

3 に答える 3

7

次のオペコードがあります。

mov eax, [edx+ecx]

そして、以下から組み立てることができるオペコードがあります。

mov eax, [edx-CONSTANT]

アセンブラーは通常のオペコードを使用しますが、アセンブリ中に定数を否定するためです。

mov eax, [edx+(-CONSTANT)]

ただし、次のオペコードはありません。

mov eax, [edx-ecx]

基本的に、存在しない命令を実行しようとしています。

于 2011-04-01T15:01:05.660 に答える
5

以下に、x86 アドレッシング モードの概要を示します。「登録マイナス登録」形式がないことに注意してください: Wikipedia

ecx回避策として、使用する内容を無効にすることができます[edx+ecx](後で元の値が必要な場合は、無効にする必要がある場合があります)。

于 2011-04-01T15:18:44.020 に答える
1

そのようなオフセットで減算することは許可されていません。その目的は、メモリバッファのベースをポイントして、それにオフセットを追加できるようにすることです。減算すると、指定されたメモリバッファからあなたを引き出します...

于 2011-04-01T13:35:10.283 に答える