-1
我正在定義單個結構下的所有寄存器並訪問它的大小作爲偏移量,如下所示。如何在結構中獲得正確的偏移地址
typedef struct _REG_STRUC {
UINT32 E1000_CTRL // 0x00000
UINT32 E1000_CTRL_DUP //0x00004
UINT32 E1000_STATUS //0x00008
UINT32 E1000_EERD //0x00014
UINT32 E1000_CTRL_EXT //0x00018
UINT32 E1000_FLA //0x0001C
UINT32 dummy[3] //0x00020-0x00028
UINT32 E1000_FCAH //0x0002C
}*REGP;
如u可以看到上面我已插入的虛設陣列以跳過12個字節。如果我跳過這些12個字節僅我得到E1000_FCAH寄存器的確切的存儲單元。據我所知,這是浪費記憶。如何克服這一點。關於此的知識我
編輯:在閱讀this thread後,我瞭解了有關填充概念。我想通過使用它作爲偏移地址來訪問REG E100_FCAH。所以爲了避免錯誤的提取(由於12字節的差距),我使用了大小爲12字節的虛擬數組。
沒有把假陣列在那裏?否則你的問題是不清楚的。它是如何跳過12位的? –
Ty Sami ...這是字節而不是位..現在你有了我的問題......清楚了嗎? – skanda93
您可以分別將值分配給結構中的每個變量,如REGP-> E1000_CTRL =,REGP-> E1000_CTRL_DUP = ...等。 –