Сообщение Как сделать вечный цикл? от 16.09.2023 8:23
Изменено 16.09.2023 8:25 vsb
Как сделать вечный цикл?
Пишу программу для микроконтроллера, нужно написать код, который просто будет крутиться в вечном цикле. Т.е. компилироваться в инструкцию b .
В голову, конечно, сразу приходит for ( ; ; ) {} но clang с оптимизацией этот цикл тупо выкидывает.
Можно написать for (volatile unsigned unused;; unused++) {} этот код не выкидывает, но мне не нравится, что он постоянно гоняет трафик между процессором и оперативной памятью, например это может мешать DMA-передачам.
Можно ли это сделать на C, согласно стандарту и без ассемблерных вставок?
В голову, конечно, сразу приходит for ( ; ; ) {} но clang с оптимизацией этот цикл тупо выкидывает.
Можно написать for (volatile unsigned unused;; unused++) {} этот код не выкидывает, но мне не нравится, что он постоянно гоняет трафик между процессором и оперативной памятью, например это может мешать DMA-передачам.
Можно ли это сделать на C, согласно стандарту и без ассемблерных вставок?
Как сделать вечный цикл?
Пишу программу для микроконтроллера, нужно написать код, который просто будет крутиться в вечном цикле. Т.е. компилироваться в инструкцию b .
В голову, конечно, сразу приходит for ( ; ; ) {} но clang с оптимизацией этот цикл тупо выкидывает.
Можно написать for (volatile unsigned unused; ; unused++) {} этот код не выкидывает, но мне не нравится, что он постоянно гоняет трафик между процессором и оперативной памятью, например это может мешать DMA-передачам.
Можно ли это сделать на C, согласно стандарту и без ассемблерных вставок?
В голову, конечно, сразу приходит for ( ; ; ) {} но clang с оптимизацией этот цикл тупо выкидывает.
Можно написать for (volatile unsigned unused; ; unused++) {} этот код не выкидывает, но мне не нравится, что он постоянно гоняет трафик между процессором и оперативной памятью, например это может мешать DMA-передачам.
Можно ли это сделать на C, согласно стандарту и без ассемблерных вставок?