Не могу заставить IAR C/C++ Compiler for 8051 7.10A использовать инструкцию DJNZ. Пытался писать
Код
do { bla bla } while (--size);
и
for( i=size; i!=0; i--) { bla bla }
Но компиллер все равно не понимает что от него требуется. Пробовал использовать разнве режимы ортимизации - тот-же результат. Кто может мне поммочь? Буду очен признателен.
Извините, что вопросом на вопрос: а зачем Вам упорно надо, чтобы появилась эта команда? Попробуйте написать на асме, если очень требуется. Но все равно не понятно, Вы свою оптимизацию хотите реализовать или еще что-то?
Мне это необходимо для максимальной оптимизации кода по быстродействию. Я уже написал этот блок на асме. Но просто хотелось обойтись без чужеродных вставок.
Замечательный анализ работы Си-компилятора и думаю автору темы он поможет, но только в том случае, если будут правильно выбраны типы (размерности) переменных.
Уважаемый shamray, проверьте, не выходит ли размер переменной индекса цикла за пределы 255 (т.е. не char, а например int), иначе индекс не поместиться в один байт и команда DJNZ не сможет быть подставлена компилятором.
Спасибо bialix. Но это я уже прочел первым делом. Вc все равно в IAR такое не желает компилиться как надо. Просто я так понял что компиллер убогий. А с переменными все в норме - регистровая и не больше 256, а точнее количесство циклов 127.