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

 
 
5 страниц V   1 2 3 > »   
Reply to this topicStart new topic
> Выбор пути ... Assembler или C ?
Kalina
сообщение Mar 3 2008, 19:02
Сообщение #1


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

Группа: Свой
Сообщений: 75
Регистрация: 19-12-07
Из: Житоимр
Пользователь №: 33 457



Всем добрый день!

Недавно начал осваивать микроконтроллеры фирмы ATMEL. Первое с чем имел дело - AT90S2313, теперь перешёл на ATmega. Проэкты в основном небольшие (думаю это времено), пользуюсь AVR Studio. Язык, который использую - assembler. Часто посещаю форум, и особо часто попадаю на программы написанные на С.
Так вот, хочу задать вопрос всем, кто чувствует себя уже уверенными пользователями обоих языков, вы не могли бы обьяснить начинающему:

1. почему люди переходят с assemblera на C?
2. какие плюсы и минусы языка С?
3. где без языка С нельзя обойтись?
4. лично ваше мнение относительно обоих? (ненормативная лексика принимается:-)

Всем, кто отзовется, заранее благодарен!
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 3 2008, 19:15
Сообщение #2


Гуру
******

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



Цитата(Kalina @ Mar 3 2008, 22:02) *

Для начала, дабы не раздувать в 999 раз флейм пройдитесь поиском по форуму.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Vladimir_J
сообщение Mar 3 2008, 19:37
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 74
Регистрация: 9-01-07
Из: Украина
Пользователь №: 24 228



Добрейшее время суток!!!
В свое время я тоже сильно раздумывал переходить или не переходить на Си, когда попробывал оценил smile.gif
Представте Вы ехали на мерседеце, и Вам говорит содись на велосипед мол это класно свежий воздух, здоровье, а мерседец это же конфортнее. (Этой фразой можно объяснить разницу между ASM и Си).

А так просто надо попробывать, и Вы ивидите в чем разница.

А Вам удачи в Ваших начинаниях.
С Уважением, Владимир.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Mar 3 2008, 19:41
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Вот чисто практические данные.
http://electronix.ru/forum/index.php?showtopic=43498 к примеру.
Go to the top of the page
 
+Quote Post
Omen_13
сообщение Mar 3 2008, 21:03
Сообщение #5


Силовик-затейник
****

Группа: Модераторы
Сообщений: 766
Регистрация: 18-02-07
Из: Столица солнечного Башкортостана
Пользователь №: 25 467



Очередная религиозная война назревает? smile3009.gif maniac.gif

На асме можно делать простые конструкции с предельным быстродействием за счёт использования особенностей архитектуры и команд, на С математика и навороченные платформонезависимые алгоритмы.
В теории конечно можете написать для себя математику с точкой на асме, но лучше потратить это время на освоение С...
Моё мнение - надо знать оба языка. ИМХО!!!


-----------
bb-offtopic.gif Уважаемый zltigo, в этой войне на меня не расчитывайте! biggrin.gif

Сообщение отредактировал Omen_13 - Mar 3 2008, 21:08


--------------------
"Вперёд на мины, ордена потом!"
"инжинер/разработчик создает нечто, в отличии от многих других профессий. В этом есть сходность с художниками или музыкантами"(с)CodeWarrior1241
Go to the top of the page
 
+Quote Post
zltigo
сообщение Mar 3 2008, 21:05
Сообщение #6


Гуру
******

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



Цитата(Omen_13 @ Mar 4 2008, 00:03) *
Очередная религиозная война назревает? smile3009.gif maniac.gif

Только попробуйте! smile.gif


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Omen_13
сообщение Mar 3 2008, 21:29
Сообщение #7


Силовик-затейник
****

Группа: Модераторы
Сообщений: 766
Регистрация: 18-02-07
Из: Столица солнечного Башкортостана
Пользователь №: 25 467



zltigo, см. выше!

Добавлю еще:
Асм как язык привязан к семействам - насколько я помню 51, АВР и ПИКи по командам отличаются довольно капитально, т.е. при смене практически всё придётся писать с 0. Зная только асм вы принудительно ограничиваете себе "область применения". При написании проги больше 4 кБ надо очень постараться не наклепать ошибок.
С другой стороны при использовании С вы вносите элемент неизвестности - кто знает как компилятор разложит команды в машинный код и какие при этом могут возникнуть ошибки по вине разработчика компилятора (шашкой махать не буду - об этом уже говорили/спорили).
Изучить аппаратные особенности применяемого процессора всё равно придётся в не зависимости от того какой язык С или асм


--------------------
"Вперёд на мины, ордена потом!"
"инжинер/разработчик создает нечто, в отличии от многих других профессий. В этом есть сходность с художниками или музыкантами"(с)CodeWarrior1241
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 3 2008, 22:31
Сообщение #8


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



ИМХО, ассемблер - это база, которую ДОСКОНАЛЬНО должен знать любой программист-эмбеддер, считающий себя профессионалом. Если человек "плавает" в ассемблере, то (ИМХО конечно) он и на СИ не сможет написать хорошую программу для Target MCU. Потому что в отличии от писателей программ для компов, которые (если они не пишут низкоуровневые драйвера) больше решают задачи по обработке информации разработчики программ для микроконтроллеров рещают задачи управления железом и обработки сигналов в реальном времени

ИМХО, сначала нужно досконально изучить архитектуру и АСМ ( который является отражением архитектуры MCU ), а уж потом пиши на чём хочешь: хоть на СИ, хоть на Паскале, хоть на Басике...Хоть на Смаллталке наконец


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
Дон Амброзио
сообщение Mar 3 2008, 22:45
Сообщение #9


Местный
***

Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947



Цитата(Omen_13 @ Mar 4 2008, 00:29) *
насколько я помню 51, АВР и ПИКи по командам отличаются довольно капитально, т.е. при смене практически всё придётся писать с 0.

Из опыта. А если проект написан на СИ разве не придётся всё писать практически с нуля?

Если Вы не пишите конечно какую-нибудь универсальную RTOS на продажу в которой априори закладывается возможность портирования на несколько архитектур.

А так. По-большому счёту большинтсво программ для MCU - это программы уникального применения, предназначенные для конкретного MCU в конкретном девайсе.

А насчёт переписывания с нуля? Я за много лет работы выработал целый ряд принципов организации программы, которые определяют какой набор мудулей должен быть в программе и как организовать алгоритм. А зная их написать код на любом языке - это плёвое дело. Я, например, легко портировал свою RTOS на АСМ-е с 51-й архитектуры под AVR. Разработка RTOS под 51 -ю архитектуру у меня заняла более полгода. А переписывание её под AVR заняло чуть больше недели....

Так что не с нуля


--------------------
После устранения бага в программе она стала работать....хуже
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Mar 4 2008, 06:42
Сообщение #10


Полное ничтожество
*****

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



Си так и не смог выучить - не дано наверное



но что точно что если проект в упор работает на ассемблере (было много случаев, когда считал команды пропробывал несколько вариантов
это было в системе некоторой обработки, где 256 раз в секунду приходили новые данные с 12 каналов и в соответствии с частотой уже стоявшего контроллера на обработку можно было потратить 1100 циклов - меньше чем 100 циклов на канал) а там надо было умножать делить искать экстреммумы сравнивать с порогом сортировать расчитывать порог по шуму складывать в буфер и передавать по последовательной линии
это уже экстримальное программирование но параллельно каждой ассемблерной команде стояла её длительность и количество циклов от начала

на си этого сделать нельзя, задачи подобного рода не решаемы
Go to the top of the page
 
+Quote Post
608
сообщение Mar 4 2008, 07:01
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 70
Регистрация: 8-05-07
Пользователь №: 27 604



Цитата(Kalina @ Mar 3 2008, 23:02) *
Всем, кто отзовется, заранее благодарен!

Си конечно лучше, но Ваша проблема, видимо, это отсутствие хорошего компилятора Си и еще, наверное, некому ввести в курс дела.
Рекомендую IAR (для AVR) и Keil (для 51), все это есть с лечениями. Что характерно, просматривая листинги асм-кода после компиляции, Вы еще лучше начнете писать программы на ассемблере. А также делать асм-вставки в Си-коды, в критичных местах. Но это уже высший класс, для этого надо много стараться и ковыряться в интернете, а также надо найти рядом помощника, чтобы подсказал.

Сообщение отредактировал 608 - Mar 4 2008, 07:03
Go to the top of the page
 
+Quote Post
ReAl
сообщение Mar 4 2008, 07:10
Сообщение #12


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Цитата(rv3dll(lex) @ Mar 4 2008, 08:42) *
на си этого сделать нельзя, задачи подобного рода не решаемы
Ну, это и на тираж предполагаемый смотреть надо...
Если ожидаемый тираж пусть 1000 штук, зарплата программиста пусть 1000 баксов, протолчётся на асме считая такты он пусть лишний месяц - итого можно спокойно брать процессор на 2 бакса дороже и спокойно писать на С. Это будет как минимум не убыточно (затраты на программиста больше получаемой им зарплаты, надо ещё о сопровождении подумать).
Числа можно двигать туда-сюда и думать, стоит ли оно того.
А также не мешает проштудировать "историю одного байта" и подумать о том, что время сейчас несколько другое, если вдруг плнадобится не 256, а 320 раз в секунду или не с 12 а с 16 каналов - разрабатывать всё заново?

Конечно, есть крайние случаи - типа такого: тираж предполагается 10000/месяц, среднерыночная цена изделия так мала, что каждый цент на счету, из соображений потребления и быстродействия приходится каждый такт экономить - и это всё одновремённо.
Но что-то мне говорит, что в большинстве случаев это не так, на асме пишется по привычке/из любвы к искусству и можно или всё написать на С, или только критические 5% написать на асме.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
Baser
сообщение Mar 4 2008, 07:13
Сообщение #13


Просто Che
*****

Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881



У вас в корне неправильное понимание вопроса: "Выбор пути ... Assembler или C ?".

Это неправильно, потому что правильно: "Выбор пути: Assembler ==> Assembler и C ==> Assembler и C++ ==> То_Что_Дальше_Придумают" biggrin.gif

То, что начали с ассма, хорошо. Без его знания правильно писать на Си будет трудно: в листинг на ассме частенько заглядывать приходится. А дальше - исходя из задачи по быстродействию: укладывается программа на Си по быстродействию в нужные рамки - тогда чистый C/C++. Не укладывается - критические секции на ассме. Вот и вся философия пути smile.gif
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Mar 4 2008, 07:27
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 702
Регистрация: 14-07-06
Пользователь №: 18 823



Цитата(Baser @ Mar 4 2008, 11:13) *
Вот и вся философия пути smile.gif

Да и философии тут нет никакой.
Один только момент - если вовремя не задуматься, как по другому можно сделать проект - значит потерять перспективу.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
rv3dll(lex)
сообщение Mar 4 2008, 08:54
Сообщение #15


Полное ничтожество
*****

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



Цитата(ReAl @ Mar 4 2008, 10:10) *
Ну, это и на тираж предполагаемый смотреть надо...
Если ожидаемый тираж пусть 1000 штук, зарплата программиста пусть 1000 баксов, протолчётся на асме считая такты он пусть лишний месяц - итого можно спокойно брать процессор на 2 бакса дороже и спокойно писать на С. Это будет как минимум не убыточно (затраты на программиста больше получаемой им зарплаты, надо ещё о сопровождении подумать).
Числа можно двигать туда-сюда и думать, стоит ли оно того.
А также не мешает проштудировать "историю одного байта" и подумать о том, что время сейчас несколько другое, если вдруг плнадобится не 256, а 320 раз в секунду или не с 12 а с 16 каналов - разрабатывать всё заново?

Конечно, есть крайние случаи - типа такого: тираж предполагается 10000/месяц, среднерыночная цена изделия так мала, что каждый цент на счету, из соображений потребления и быстродействия приходится каждый такт экономить - и это всё одновремённо.
Но что-то мне говорит, что в большинстве случаев это не так, на асме пишется по привычке/из любвы к искусству и можно или всё написать на С, или только критические 5% написать на асме.


тираж был единичный - 3 экземпляра - на самом деле это НИР
другой процессор поставить и изготовить новый образец никто бы не дал - ВПК блин - он наверное там до сих пор стоит)))

, да и стоимость его была не на 2 доллара больше речь о TMS2406 и TMS2812 5 лет назад они только появились.

скорость написания - согласен
знаковая арифметика не беспокоит
функций навалом
можно быстро написать работающий проект не беспокоясь о забытых переменных и LDP
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th July 2025 - 03:55
Рейтинг@Mail.ru


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