реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Как заставить IAR for MCS51 использовать DJNZ?, Как заставить IAR for MCS51 использовать DJNZ?
shamray
сообщение Nov 22 2005, 09:48
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Не могу заставить IAR C/C++ Compiler for 8051 7.10A использовать инструкцию DJNZ.
Пытался писать
Код
do  {
   bla
   bla
} while (--size);

и

for( i=size; i!=0; i--)
{
   bla
   bla
}


Но компиллер все равно не понимает что от него требуется. Пробовал использовать разнве режимы ортимизации - тот-же результат. Кто может мне поммочь? Буду очен признателен.
Go to the top of the page
 
+Quote Post
KRS
сообщение Nov 22 2005, 09:50
Сообщение #2


Профессионал
*****

Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555



А никак sad.gif
у ИАРА очень посредственный компилер для 51
используйте KEIL
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Nov 22 2005, 14:32
Сообщение #3


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Извините, что вопросом на вопрос: а зачем Вам упорно надо, чтобы появилась эта команда? Попробуйте написать на асме, если очень требуется. Но все равно не понятно, Вы свою оптимизацию хотите реализовать или еще что-то?


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
shamray
сообщение Nov 24 2005, 07:41
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Мне это необходимо для максимальной оптимизации кода по быстродействию. Я уже написал этот блок на асме. Но просто хотелось обойтись без чужеродных вставок.
Go to the top of the page
 
+Quote Post
Виктория
сообщение Nov 24 2005, 12:34
Сообщение #5


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Может мало конструкций попробовали... wink.gif
Во 1) size - лучше регистровая и байтовая переменная!
Во 2) еще конструкции для экспериментов
Код
for(;size!=0;--size);
while(size--){ };
Go to the top of the page
 
+Quote Post
shamray
сообщение Nov 24 2005, 13:32
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Да, видимо не судба. Уже все перепробовал. Спасибо всем кто откликнулся.
Go to the top of the page
 
+Quote Post
bialix
сообщение Nov 24 2005, 15:26
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 4-11-04
Из: zp.ua
Пользователь №: 1 046



Два года назад я написал вот это:

http://onembedding.com/tools/keil/articles/loop_256.htm
http://onembedding.com/tools/keil/articles/loop_256_2.htm

Описанный рецепт работает для Кейла. Для ИАР -- не знаю, никогда не пробовал и уж никогда и не попробую.


--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Nov 24 2005, 15:38
Сообщение #8


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Замечательный анализ работы Си-компилятора и думаю автору темы он поможет, но только в том случае, если будут правильно выбраны типы (размерности) переменных.

Уважаемый shamray, проверьте, не выходит ли размер переменной индекса цикла за пределы 255 (т.е. не char, а например int), иначе индекс не поместиться в один байт и команда DJNZ не сможет быть подставлена компилятором.


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
Виктория
сообщение Nov 24 2005, 15:51
Сообщение #9


инженер
****

Группа: Свой
Сообщений: 520
Регистрация: 19-09-05
Из: Самара
Пользователь №: 8 701



Цитата(bialix @ Nov 24 2005, 19:26) *
Два года назад я написал вот это:

http://onembedding.com/tools/keil/articles/loop_256.htm
http://onembedding.com/tools/keil/articles/loop_256_2.htm

Описанный рецепт работает для Кейла. Для ИАР -- не знаю, никогда не пробовал и уж никогда и не попробую.


Очень понравилось. smile.gif Доступно для молодежи, доказательно и показательно.
Go to the top of the page
 
+Quote Post
bialix
сообщение Nov 24 2005, 21:29
Сообщение #10


Частый гость
**

Группа: Свой
Сообщений: 174
Регистрация: 4-11-04
Из: zp.ua
Пользователь №: 1 046



Эх... А сколько копий сломали, обсуждая этот хак! Но факт остается фактом: описанное решение -- это хак чистой воды. ;-)


--------------------
Имей мужество пользоваться своим собственным разумом! (с) И.Кант
Go to the top of the page
 
+Quote Post
shamray
сообщение Nov 25 2005, 06:52
Сообщение #11


Частый гость
**

Группа: Свой
Сообщений: 114
Регистрация: 31-08-05
Из: Украина, Одесса
Пользователь №: 8 105



Спасибо bialix. Но это я уже прочел первым делом. Вc все равно в IAR такое не желает компилиться как надо. Просто я так понял что компиллер убогий. А с переменными все в норме - регистровая и не больше 256, а точнее количесство циклов 127.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2025 - 04:46
Рейтинг@Mail.ru


Страница сгенерированна за 0.01388 секунд с 7
ELECTRONIX ©2004-2016