最近、2 つのオフセットの違いVisual-C++ インライン アセンブラーの2 つのオフセットの違いについてコミュニティに質問したところ、すぐに返信がありました。どうもありがとうございます。今、私は別の問題に遭遇しました。これはさらに悪いことです。
のような指示があります。
..naked...
__asm{
...
mov eax, dword ptr [ebx + offset data1]
...
}
本当の問題は、それが次のようにコンパイルされることです
mov eax, [offset data1]
この行にはコンパイラの警告 (/WAll モード) はありませんが、コードが大幅に変更されています。静かに。それはコンパイラのバグですか、それとも機能ですか? たぶん、追加のフラグを指定する必要がありますか?
問題はオフセットのみです。
mov eax, dword ptr [ebx + 0xconst]
正しくコンパイルされます。
はい、コードを操作できます
mov eax, offset data1
add eax, ebx
mov eax, [eax]
しかし、その場合、変更するコードがたくさんあります。私を悩ませているのは、警告がないことです。