一部のコードを ASM から C++ に変換しています。ASM は単純に次のようになります。
mov dword ptr miscStruct, eax
構造体は次のようになります。
struct miscStruct_s {
uLong brandID : 8,
chunks : 8,
//etc
} miscStruct;
C++ で構造体を埋める簡単な 1 行 2 行の方法はありますか? これまでのところ、私は使用しています:
miscStruct.brandID = Info[0] & 0xff; //Info[0] has the same data as eax in the ASM sample.
miscStruct.chunks = ((Info[0] >> 8) & 0xff);
これで問題なく動作しますが、これらのビットフィールド構造体の 9 ~ 10 個を埋める必要があり、そのうちのいくつかには 30 個の奇数フィールドがあります。したがって、このようにすると、10 行のコードが 100 行以上になることになりますが、これは明らかにそれほど素晴らしいことではありません。
では、C++ で ASM を複製する簡単でクリーンな方法はありますか?
もちろん、「miscStruct = CPUInfo[0];」を試しました。しかし、C++ は残念ながらそれを好みません。:(
error C2679: binary '=' : no operator found which takes a right-hand operand of type 'int'
..そして、構造体を編集できません。