У меня есть встроенное приложение с критичным по времени ISR, которое должно перебирать массив размером 256 (предпочтительно 1024, но минимум 256) и проверять, соответствует ли значение содержимому массивов. Значение bool будет установлено в true, если это так.
 Микроконтроллер представляет собой ядро NXP LPC4357, ARM Cortex M4, а компилятор - GCC. Я уже объединил уровень оптимизации 2 (3 медленнее) и поместил функцию в оперативную память вместо флэш-памяти. Я также использую арифметику указателей и цикл for, который выполняет обратный отсчет вместо повышения (проверка, если i!=0 быстрее, чем проверка, если i<256). В итоге я получаю длительность 12,5 мкс, которую необходимо резко сократить, чтобы это было возможно. Это (псевдо) код, который я сейчас использую:
uint32_t i;
uint32_t *array_ptr = &theArray[0];
uint32_t compareVal = 0x1234ABCD;
bool validFlag = false;
for (i=256; i!=0; i--)
{
    if (compareVal == *array_ptr++)
    {
         validFlag = true;
         break;
     }
}
Какой самый быстрый способ сделать это? Использование встроенной сборки разрешено. Другие "менее элегантные" трюки также допускаются.

