Como impedir que o GCC otimize um ciclo de espera ocupado?

Quero escrever um firmware de código C para os microcontroladores Atmel AVR. Vou compilá-lo usando o GCC. Além disso, desejo habilitar otimizações do compilador -Os ou-O2), como não vejo razão para não habilitá-los, e provavelmente eles gerarão uma montagem melhor, mais rapidamente do que escrever a montagem manualment

Mas eu quero um pequeno pedaço de código não otimizado. Eu quero atrasar a execução de uma função por algum tempo e, assim, eu queria escrever um loop de não fazer nada apenas para perder algum tempo. Não precisa ser preciso, aguarde um pouc

/* How to NOT optimize this, while optimizing other code? */
unsigned char i, j;
j = 0;
while(--j) {
    i = 0;
    while(--i);
}

Como o acesso à memória no AVR é muito mais lento, eu queroi ej para ser mantido nos registros da CP

Update: Acabei de encontrar util / delay.h e util / delay_basic.h a partir deAVR Libc. Embora na maioria das vezes seja uma idéia melhor usar essas funções, essa pergunta permanece válida e interessante.

Perguntas relacionadas

Como evitar que o gcc otimize algumas instruções em Existe uma maneira de dizer ao GCC para não otimizar um pedaço de código específicComo não otimizar a distância - mecânica de uma função insensata

questionAnswers(8)

yourAnswerToTheQuestion