ASM vs C

Do you have a question? Post it now! No Registration Necessary

Threaded View
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

Re: ASM vs C
  

  Hi!

"Alexey V Bugrov" сообщил в новостях следующее:

Quoted text here. Click to load it

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

Quoted text here. Click to load it
  Да-да :-)

  Примите уверения в совершеннейшем к Вам почтении



Re: ASM vs C
сообщил/сообщила в новостях следующее:
Quoted text here. Click to load it
Да, я и раньше-то полагал, что на асме писать стоит только по медицинским
показаниям, а теперь тем более. Мне правда проще и однозначнее - поделки
нетиражные, а время свое я ценю.

Денис.



Site Timeline