我把一些代碼ASM到C++,ASM的只是看起來像這樣:包裝一個int到C++位域
mov dword ptr miscStruct, eax
的結構是這樣的:
struct miscStruct_s {
uLong brandID : 8,
chunks : 8,
//etc
} miscStruct;
有一種簡單的一兩行方式來填充C++中的結構? 到目前爲止,我使用:
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'
..和我不能編輯結構。
我最終使用: '*的reinterpret_cast(&miscStruct)=信息[0];' –
Riley