У меня есть некоторый кодВсегда ли Volatile означает регистр процессора? и отношение к памяти отображается
// Locals to hold pointers to the hardware
static volatile uint32_t *gpio ;
static volatile uint32_t *pwm ;
static volatile uint32_t *clk ;
static volatile uint32_t *pads ;
void setPadDrive (int group, int value)
{
uint32_t wrVal ;
if ((wiringPiMode == WPI_MODE_PINS) || (wiringPiMode == WPI_MODE_PHYS) || (wiringPiMode == WPI_MODE_GPIO))
{
if ((group < 0) || (group > 2))
return ;
wrVal = BCM_PASSWORD | 0x18 | (value & 7) ;
*(pads + group + 11) = wrVal ;
if (wiringPiDebug)
{
printf ("setPadDrive: Group: %d, value: %d (%08X)\n", group, value, wrVal) ;
printf ("Read : %08X\n", *(pads + group + 11)) ;
}
}
}
Так сверху регистры процессора являются памяти на карту и указал на указатель. Таким образом, если я обратился к этой ячейке памяти, CPU увидит изменчивое состояние, и он перенаправит доступ к регистру.
также, как CPU знает, какое место памяти будет направлять на какой регистр? Мне не хватает таблицы, которая указывает на это?
Я думаю, вы имели в виду [это] (http://stackoverflow.com/questions/578202/register-keyword-in-c). – Mauren
@Mauren Я так не думаю. Это явно встроенное программирование, и 'volatile' используется много для этой конкретной цели. – orlp