Что означает "+ 3" в то время как (*(MPcore_private_timer_ptr + 3) == 0)?

В настоящее время я читаю компьютерную систему DE0-Nano-SoC с ARM Cortex-A9. Я нашел в ней код a c и не понимаю, что означает "+ 3" в "*(MPcore_private_timer_ptr + 3)"?

while (1)
{
*HPS_GPIO1_ptr = HPS_LEDG; // turn on/off LEDG
while (*(MPcore_private_timer_ptr + 3) == 0)
; // wait for timer to expire
*(MPcore_private_timer_ptr + 3) = 1; // reset timer flag bit
HPS_LEDG ^= bit_24_pattern; // toggle bit that controls LEDG
}

3 ответа

Решение

Blockquote

* (MPcore_private_timer_ptr + 3) = 1; // сбросить бит таймера

Синоним минимум:

* (& MPcore_private_timer_ptr [3]) = 1; // сбросить бит таймера

*(MPcore_private_timer_ptr + 3) такой же как MPcore_private_timer_ptr[3], Вы разыменовываете увеличенный указатель.

Следуя за ответом @yar, MPcore_private_timer_ptr является указателем на базовый адрес таймера, отображаемого в памяти, то есть регистры таймера, все последующие с этого адреса. Смещение +3 переводит вас в другой регистр (в данном случае регистр состояния прерывания) для этого таймера.

Другие вопросы по тегам