[an error occurred while processing this directive]
Мои впечатления.
(«Телесистемы»: Конференция «Микроконтроллеры и их применение»)

миниатюрный аудио-видеорекордер mAVR

Отправлено John 29 октября 2002 г. 15:18
В ответ на: IAR-C for PIC16: Глава 1. Первые впечатления и проблемы несовместимости с HT-PICC отправлено Baser 29 октября 2002 г. 11:47

Работаю периодически на HT PIC C и на нескольких версиях IAR (не для PIC). Считаю, что писали компилятор от HT гении.
Несколько примеров.
Для доступа к отдельным байтам int'а у IAR'а нужно обязательно что-то изобретать - указатели, union'ы и т.п. В HT достаточно написать a = i / 0x100; или a = i % 0x100;, и все будет переведено компилером в простую адресацию по соответствующему адресу. IAR такую понятную конструкцию всегда переводит в вызов функций деления.
Вот там ниже был вопрос, как swap на С изобразить. Ни за что не поверю, что такая конструкция у IAR в одну команду будет переведена.
Ну там доступ к битам и другие радости, чего у IAR'а часто нет.
HT часто лучше тебя понимает, что ты хотел написать!
Особенно поразил один случай. Написал примерно следующее

unsigned long L;

L = 3000;
L = L * 5;
L = L + 20;
ShowDigit ( ( L / 100 ) % 10 ); // Вывод на экран десятичного разряда
ShowDigit ( ( L / 1000 ) % 10 );
Ну и еще несколько подобных строк. Написалось так странно (ведь L на самом деле константа), поскольку было вырезано из другой программы, где это не так, и для пробы откомпилировано. Так вот компилер САМ ОПРЕДЕЛИЛ, что L - константа, и программа увеличилась слов на 10. Вы можете представить, что такое сделал IAR? Я - нет.
А что касается увеличения кода. Мне кажется, что IAR не делает самую главную для PIC'ов оптимизацию - не перемещает функции по памяти, так чтобы оптимально расположить их в пределах страницы. У PIC'ов по прежнему функция через страницу переходить не может, или я отстал? Проверить просто - нужно порядок расположения функций поменять - если размер кода изменится, значит я прав.

Составить ответ  |||  Конференция  |||  Архив

Ответы



Перейти к списку ответов  |||  Конференция  |||  Архив  |||  Главная страница  |||  Содержание  |||  Без кадра

E-mail: info@telesys.ru