Что означает "+ 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 переводит вас в другой регистр (в данном случае регистр состояния прерывания) для этого таймера.