Do you have a question? Post it now! No Registration Necessary
- Alexey V Bugrov
January 30, 2004, 8:30 pm

Hi All, hope you are having a nice day!
Hу что, подлить маслица в огонь? %)
Тут как раз так получилось, что у меня есть два идентичных алгоритмически и по
функциональности проекта. Один из них -
контроллер дисплея и клавиатуры с IIC интерфейсом на PIC18 (mcc18), второй тоже
самое на PIC16 (MPASM).
Первоначально проект был написан на C для PIC18, потом в силу ряда причин был
переписан для PIC16 на ассемблере. И тот
и другой код писал я. Алгоритмы практически идентичны. Hу влом мне было искать
компилятор для PIC16, да и проект не
того уровня, чтобы заморачиваться.
И вот что получилось:
Для PIC18:
4153 out of 33048 program addresses used, program memory utilization is 12%
Для PIC16:
1531 out of 2312 program addresses used, program memory utilization is 66%
Hесколько пояснений:
1. PIC18 имеет два байта (адреса) на команду, тогда как у PIC16 команда всегда
однословная, т.е. реальное соотношение
получается примерно 2076/1531. Кроме того, некоторые команды на PIC18 даже
четырехбайтные, то есть на самом деле
соотношение даже меньше.
2. mcc18 не лучший компилятор C для PIC18.
Итого имеем (2076-1531)/1531 ~= 36% после самого тупого подсчета кода без учета
второй части п.1
Disclaimer: эта информация не является догмой, и приводится просто как пример
реального проекта на C и ASM, дабы у
спорящих появились хоть какие-то аргументы. :)
WBR,
AVB
ICQ# 43835774
mailto: avb<at>dialup.etr.ru
Hу что, подлить маслица в огонь? %)
Тут как раз так получилось, что у меня есть два идентичных алгоритмически и по
функциональности проекта. Один из них -
контроллер дисплея и клавиатуры с IIC интерфейсом на PIC18 (mcc18), второй тоже
самое на PIC16 (MPASM).
Первоначально проект был написан на C для PIC18, потом в силу ряда причин был
переписан для PIC16 на ассемблере. И тот
и другой код писал я. Алгоритмы практически идентичны. Hу влом мне было искать
компилятор для PIC16, да и проект не
того уровня, чтобы заморачиваться.
И вот что получилось:
Для PIC18:
4153 out of 33048 program addresses used, program memory utilization is 12%
Для PIC16:
1531 out of 2312 program addresses used, program memory utilization is 66%
Hесколько пояснений:
1. PIC18 имеет два байта (адреса) на команду, тогда как у PIC16 команда всегда
однословная, т.е. реальное соотношение
получается примерно 2076/1531. Кроме того, некоторые команды на PIC18 даже
четырехбайтные, то есть на самом деле
соотношение даже меньше.
2. mcc18 не лучший компилятор C для PIC18.
Итого имеем (2076-1531)/1531 ~= 36% после самого тупого подсчета кода без учета
второй части п.1
Disclaimer: эта информация не является догмой, и приводится просто как пример
реального проекта на C и ASM, дабы у
спорящих появились хоть какие-то аргументы. :)
WBR,
AVB
ICQ# 43835774
mailto: avb<at>dialup.etr.ru

Re: ASM vs C
Hi!
"Alexey V Bugrov" сообщил в новостях следующее:

Тогда и я могу свой пример привести.
Недавно потребовалось провести реинжиниринг устройства, разработанного
мною же лет 5 назад - расширить функциональность. В исходном варианте
программа занимала 4Ксловный пик почти под завязку и писана была на асме,
причем написана довольно плотно (в ущерб читабельности), дабы в 4К впихнуться.
Полистал я с тоской исходники, и осознал, что быстрее это все на Це перепишу
с нуля, чем разбираться буду и с глюками бороться. Пик был взят 8Ксловный
(877 вместо 74), программа переписана (плата - без изменений), результат - 6К с
небольшим хвостиком.
Вначале, правда, были проблемы с оверхедом, с опциями не вполне разобрался
(я первый раз в руки Hi-Tech PIC взял) , я и тут, в конфе спрашивал, но мне
подсказали, в чем была ошибка.
С учетом того, что функциональность заметно расширена, оверхед я оцениваю
где-то 25%. Вставки на асме не понадобились, хотя куски, до некоторой степени
критичные к быстродействию были - софтверный UART на 9600(аппаратный тоже
занят), генерация DTMF врукопашную, штук 5 уровней прерываний - все и на С
можно успеть, если в генерируемый код поглядывать и писать с учетом.

Да-да :-)
Примите уверения в совершеннейшем к Вам почтении
Site Timeline
- » управление мобильником
- — Next thread in » Microcontrollers (Russian)
-
- » Опять hi-tech picc
- — Previous thread in » Microcontrollers (Russian)
-
- » По моему это гениально
- — Newest thread in » Microcontrollers (Russian)
-
- » Qualcuno si ricorda di JUL?
- — The site's Newest Thread. Posted in » Electronics Hobby (Italian)
-