|
х51 |
|
|
|
 |
Ответов
|
Jul 30 2008, 07:28
|

Полное ничтожество
    
Группа: Banned
Сообщений: 1 991
Регистрация: 20-03-07
Из: Коломна
Пользователь №: 26 354

|
Цитата(zltigo @ Jul 30 2008, 11:11)  Честно говоря даже комментировать не хочется ахинею  . Нет, я конечно понимаю, что через заднепроходное отверстие не прикладая ума можно получить любой "эффект", только вот зачем при этом пенять на компиляторы? если не понимаешь не комментируй для тебя умножение это a <= b * c; и это вне зависимости от того сколько разрядность чисел если 2х байтные числа на 51 контроллере их за одну команду ассемблера не перемножишь и займёт это десятки строк бывают ситуации, когда неточный расчёт лучше, чем потеря данных компиллятор ничего не знает поэтому на него надо пенять!!!! алгоритм его работы оптимален для большинства реализаций (он универсальный) вот простой пример чего бы не написал на си но при делении 32 разрядного числа на 32 разрядное на тексасе с помощью команды subd эта команда запустится 32 раза. но елли результат не превышает 16 бит её жостаточно запустить 16 раз - ответ будет тот же самый. проигрышь по производительности 2 раза как компиллятору объяснить это?
|
|
|
|
|
Jul 30 2008, 08:02
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(rv3dll(lex) @ Jul 30 2008, 09:28)  ..если не понимаешь не комментируй За десятилетия, так или иначе связанные с программированием на многих-многих ассеблерах, Fortran, Modula, С, .... Я понимаю очень многое  Цитата как компиллятору объяснить это? Использовать явные преобразования типов, предварительное деление сдвигом для гробления точности, перед делением. Наконец, если критично, то и ASM функцию написать совсем не грех. Только вот кричать по незнанию/не владению инструментом о его непригодности явно глупо.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
|
Jul 30 2008, 09:07
|

Гуру
     
Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244

|
Цитата(rv3dll(lex) @ Jul 30 2008, 10:16)  то есть Вы УЖЕ согласились что в ответственных местах всёже компиллятор не обеспечивает экономичности ресурсов???? При умелом использовании от современных компиляторов получаем хорошо оптимизированный код. Естествено, соревнование в ручной оптимизации, тем более на более чем старенькой 51 платформе, на уровне десятка-другого команд выграть у компилятора достаточно легко, хотя о сколь-нибудь впечатляющем выигрыше можно обычно говорить только на специально подобранных тестах  Глобально, при сколь-нибудь разумных затратах времении говорить об эффективности программирования на ASM уже не приходится. За последние годы, если не считать сопровождения одного безмерно древнего  проекта на ASM размером под 200K кода, "ответсвенных мест" в которых я прибегал к использованию нескольких десятков строчек на ASM, пожалуй наберется штук 5-6. Более того, где-то прошлой осенью пришлось столкнуться со старым изделием на 51. Разработчик тянул его много лет, вроде все работало, выпускалось, но как водится  после его ухода полезли очередные проблемы  Разбираться в 40K ASM кода совсем не хотелось, посему была просто портирована простенькая операционочка со 186 контроллера, поддержка однотипного железа, типовые протоколы и... уложившись в 30K получилося рабочий девайс не захлебываюшийся под нагрузкой, да и еще спокойно гонящий при этом в RS232 отладочную информацию. Честно говоря, предварительно морально был готов пару отработчиков прерываний на ASM писать, но не пришлось. Все стало работоспособным за счет более сложного построения системы а не тупого ускорения "ответственных мест". По весне знакомый просил помочь с Тинькой - псевдонаучная поделка генерящая "волшебные" импульсы, впрочем к делу это отношения не имеет. Писали в ней софт вполне опытные ASM писатели, только вот результат получился странноватый - по верхней частоте/длительности чего-то не лотягивала до желаемого заказчиком, да и на анализаторе спектра что-то выглядило подозрительно очень - чего-то в алгоритме ошиблись явно. Переписывали сие уже много раз, писатели и заказчик находились в конфронтации.... Пришлось за несколько вечеров переписать на C. Тоже думал просто попробую (например на меге), а потом вылизывать придется - уж больно 2K флеша не впечатлили (отвык от малых форм  ), да и по скорости достаточно сурово все по началу смотрелось. И ничего - 1.6K кода вместо 1.8K у ассемблерописателей при большем функционале и красотулечках (приблуда для продаже через TV Shop  - важно) и двойной запас по девиации частоты вверх  . И вообще ни одной сторочки (ну кроме штатного cstatrup) на ASM.
--------------------
Feci, quod potui, faciant meliora potentes
|
|
|
|
Сообщений в этой теме
Egel х51 Jul 29 2008, 09:21 MrYuran Вот это читал? Jul 29 2008, 09:27 Egel Вопрос впринципе исчерпан
Спасибо Jul 29 2008, 09:30 Egel Здравствуйте
Подскажите пожалуйста адрес хорошего ... Jul 29 2008, 16:25 lks Цитата(Egel @ Jul 29 2008, 20:25) Здравст... Jul 29 2008, 16:52  Mik174 Цитата(lks @ Jul 29 2008, 20:52) Компилят... Jul 29 2008, 20:09   lks Цитата(Mik174 @ Jul 30 2008, 00:09) Во-пе... Jul 30 2008, 18:21    777777 Цитата(lks @ Jul 30 2008, 22:21) И чем же... Jul 31 2008, 04:18     rv3dll(lex) Цитата(777777 @ Jul 31 2008, 08:18) Архит... Jul 31 2008, 05:23     Herz Цитата(777777 @ Jul 31 2008, 06:18) Может... Jul 31 2008, 07:19     SIA Цитата(777777 @ Jul 31 2008, 08:18) По бы... Jul 31 2008, 10:13 zltigo Цитата(Egel @ Jul 29 2008, 18:25) Здравст... Jul 29 2008, 17:07  lks Цитата(zltigo @ Jul 29 2008, 21:07)
Ваш... Jul 29 2008, 18:20   zltigo Цитата(lks @ Jul 29 2008, 20:20) Ваши сов... Jul 29 2008, 20:13 Egel На чем вообще лучше писать(из этих двоих я уже пон... Jul 29 2008, 20:23 zltigo Цитата(Egel @ Jul 29 2008, 11:21) ..я зна... Jul 29 2008, 20:37 Egel Вы конечно опытнее меня, но вопрос был несколько в... Jul 29 2008, 20:48  zltigo Цитата(Egel @ Jul 29 2008, 22:48) Про то ... Jul 29 2008, 20:52   Egel Образование прекрасное, кстати, а спрашивал то я с... Jul 29 2008, 21:00   SIA Цитата(zltigo @ Jul 30 2008, 00:52) Как с... Jul 29 2008, 21:07    Egel Я за вас очень рад. Не тем надо было заниматься до... Jul 29 2008, 21:09  SIA Цитата(Egel @ Jul 30 2008, 00:48) Вы коне... Jul 29 2008, 21:11   Egel Спасибо за совет Jul 29 2008, 21:13    SIA Цитата(Egel @ Jul 30 2008, 01:13) Спасибо... Jul 29 2008, 21:20   777777 Цитата(SIA @ Jul 30 2008, 01:11) Легче вс... Jul 30 2008, 04:08 AHTOXA Цитата(zltigo @ Jul 30 2008, 02:37) Цитат... Jul 29 2008, 21:35  zltigo Цитата(AHTOXA @ Jul 29 2008, 23:35) Вообщ... Jul 29 2008, 22:23   AHTOXA Цитата(zltigo @ Jul 30 2008, 04:23) Вообщ... Jul 29 2008, 23:14       Egel Да вы не обращайте внимания, у него стиль такой Jul 30 2008, 07:37         MrYuran Цитата(rv3dll(lex) @ Jul 30 2008, 12... Jul 30 2008, 08:42          rv3dll(lex) Цитата(MrYuran @ Jul 30 2008, 12:42) Комп... Jul 30 2008, 09:49           blackfin Цитата(rv3dll(lex) @ Jul 30 2008, 13... Jul 30 2008, 10:48            zltigo Цитата(blackfin @ Jul 30 2008, 12:48) Ага... Jul 30 2008, 11:08           zltigo Цитата(SIA @ Jul 30 2008, 11:16) И наобор... Jul 30 2008, 09:21 ukpyr еще есть басплатный SDCC :
http://sdcc.sourceforge... Jul 30 2008, 06:29 SIA Цитата(ukpyr @ Jul 30 2008, 10:29) еще ес... Jul 30 2008, 08:38  777777 Цитата(SIA @ Jul 30 2008, 12:38) Если реч... Jul 30 2008, 11:57   rv3dll(lex) Цитата(777777 @ Jul 30 2008, 15:57) (Про ... Jul 30 2008, 12:01   SIA Цитата(777777 @ Jul 30 2008, 15:57) Неско... Jul 30 2008, 13:22 Herz Я вам так скажу. Компилятор - сложный программный ... Jul 30 2008, 19:09 Duplex Цитата(Herz @ Jul 30 2008, 23:09) А уж ре... Aug 1 2008, 16:15  Огурцов Цитата(Duplex @ Aug 1 2008, 16:15) Первый... Aug 1 2008, 19:54   Egel Простите, но вам не приходило в голову посмотреть ... Aug 1 2008, 20:26 rv3dll(lex) пики в частности стоят почти во всех сигнализациях Jul 31 2008, 08:09 MrYuran И вообще: сводить выбор 8-битного контроллера, даж... Jul 31 2008, 08:11 skripach ЦитатаЕсть контроллер с ядром 8052, с USB портом и... Aug 1 2008, 19:28 sergey sva Много схем собирал на контроллерах MSC51, проблем ... Aug 1 2008, 20:27
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|