我有一個名爲DescriptorByte位域結構對齊1個字節和結構保持大量DescriptorByte的是這樣的:麻煩迭代結構
struct DescriptorByte
{
unsigned char IsImmedCalc : 1;
unsigned char IsPrefix : 1;
unsigned char NoMemOp : 1;
unsigned char Size : 5;
};
struct OpcodeList
{
DescriptorByte ADD_EB_GB;
DescriptorByte ADD_EV_GV;
DescriptorByte ADD_GB_EB;
DescriptorByte ADD_GV_EV;
DescriptorByte ADD_8_OI = { TRUE, FALSE, TRUE, OPBASE + IMMED_8 };
DescriptorByte ADD_32_OI = { TRUE, FALSE, TRUE, OPBASE + IMMED_32 };
DescriptorByte PUSH_ES = { TRUE, FALSE, TRUE, OPBASE };
DescriptorByte POP_ES = { TRUE, FALSE, TRUE, OPBASE };
DescriptorByte OR_EB_GB;
//ETC
};
我想是基於一個數字(字節)做迭代通過該結構是這樣的:
OpcodeList opcodelist;
BYTE count = 5;
DescriptorByte = opcodelist + count;
由於位域結構對齊到1個字節我應該得到的OpcodeList表的第5個元素,但我不知道如何使這個在C++我只知道如何使它在ASM:/
LEA EAX, OPCODELIST
MOV ECX, COUNT
MOV EAX, DWORD PTR [EAX+ECX];
AND EAX, 0FF;
謝謝。
我擔心的表現,有餘地在Intel x86和x64超過510個操作碼,所以我希望我可以使用一些指針和一個它的位移。 – ffenix
不會有任何區別。 (編輯:如果你使用'std :: array') – tenfour
如何在向量中添加如下成員: DescriptorByte ADD_8_OI = {TRUE,FALSE,TRUE,OPBASE + IMMED_8}; 等 我需要使用vector.assing列表中的每一個? :/ – ffenix