while (*(MPcore_private_timer_ptr + 3) == 0) 中的“+ 3”是什么意思?

What does "+ 3" in while (*(MPcore_private_timer_ptr + 3) == 0) mean?

我正在阅读DE0-Nano-SoC计算机系统 使用 ARM Cortex-A9 用户指南,我在其中找到了一个 C 代码,但我不明白“*(MPcore_private_timer_ptr + 3)”中的“+ 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
}

*(MPcore_private_timer_ptr + 3) 等同于 MPcore_private_timer_ptr[3]。 您取消引用递增的指针。

在@yar 的回答之后,MPcore_private_timer_ptr 是一个指向内存映射计时器基地址的指针,即计时器的寄存器都从该地址开始。 +3 偏移量将您带到该定时器的另一个寄存器(在本例中为中断状态寄存器)。

Blockquote

*(MPcore_private_timer_ptr + 3) = 1; // reset timer flag bit

是 :

的同义词

*(&MPcore_private_timer_ptr[3]) = 1; // reset timer flag bit