Микроконтроллеры часто требуют считывания регистра для очистки определенных состояний. Есть ли переносимый способ в C, чтобы убедиться, что чтение не оптимизировано, если данные не используются? Достаточно ли указывать указатель на регистр с отображением памяти как изменчивый? Другими словами, будет ли всегда выполняться работа со стандартными компиляторами?
void func(void)
{
volatile unsigned int *REGISTER = (volatile unsigned int *) 0x12345678;
*REGISTER;
}
Я понимаю, что работа с такими функциональными возможностями связана с проблемами, связанными с компилятором. Таким образом, мое определение переносимости в этом случае немного расплывчато. Я просто имею в виду, что он будет работать как можно шире с самыми популярными инструментами.