[問題] Offset

作者: Qoofate (大魯閣_最強打者)   2016-08-01 15:16:35
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
linux
問題(Question):
#define PAD_CTRL_BASE 0x800
#define OFFSET(x) (unsigned int) (&((struct pad_signals *)(PAD_CTRL_BASE))->x)
struct pad_signals {
int gpmc_ad0;
int gpmc_ad1;
int gpmc_ad2;
int gpmc_ad3;
int gpmc_ad4;
int gpmc_ad5;
...
}
例: 取值
OFFSET(gpmc_ad3);
請問OFFSET那邊 是如何取到位移值的
看起來好像把 gpmc_ad3的位址 ,變成用int為單位
小弟看不是很懂..
請大大賜教
作者: boss0405 (boss)   2016-08-01 18:16:00
轉型成指向pad_signals的指標後,再取值的位址,再轉型成unsigned int應該就是將PAD_CTRL_BASE對應到pad_signals的格式,在32bit下,&gpmc_ad0=0x800, &gpmc_adr2=0x804依此類推
作者: Qoofate (大魯閣_最強打者)   2016-08-01 19:20:00
喔喔~ 大概看懂了 感謝B大不過 &gpmc_adr2 應該等於0x808 ?
作者: boss0405 (boss)   2016-08-01 20:42:00
啊對,我是要打&gpmc_adr1 XD

Links booklink

Contact Us: admin [ a t ] ucptt.com