|
Выбор пути ... Assembler или C ? |
|
|
|
Mar 3 2008, 19:02
|

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

|
Всем добрый день! Недавно начал осваивать микроконтроллеры фирмы ATMEL. Первое с чем имел дело - AT90S2313, теперь перешёл на ATmega. Проэкты в основном небольшие (думаю это времено), пользуюсь AVR Studio. Язык, который использую - assembler. Часто посещаю форум, и особо часто попадаю на программы написанные на С. Так вот, хочу задать вопрос всем, кто чувствует себя уже уверенными пользователями обоих языков, вы не могли бы обьяснить начинающему:
1. почему люди переходят с assemblera на C? 2. какие плюсы и минусы языка С? 3. где без языка С нельзя обойтись? 4. лично ваше мнение относительно обоих? (ненормативная лексика принимается:-) Всем, кто отзовется, заранее благодарен!
|
|
|
|
|
 |
Ответов
|
Mar 6 2008, 17:57
|

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

|
из своего процессорного опыта - это было по необходимости - так я рассыпушечник 133-164ла3-7 и всё такое ,,,,,,,,,,,,,,,,,CPLD потом FPGA )))) может у меня был такой неправильный подход - все процессы должны выполняться параллельно - в процессоре псевдо параллельно
а именно нарисовать схему = нарисовать эпюры сигналов а далее команды по временной оси - вопрос с чередованием не снят
любые операции можно проредить командами с периферией
сейчас выглядит глупо))) но программы аонов конца 80х начала 90х в 4к пзу возможностями не страдали сам писал по 400 кбайт на ассемблере под TMS
|
|
|
|
|
Mar 6 2008, 18:49
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(rv3dll(lex) @ Mar 6 2008, 19:57)  вопрос с чередованием не снят В таких случаях я обычно говорю "И чтобы он еще за пивом бегал!" Цитата(rv3dll(lex) @ Mar 6 2008, 19:57)  сейчас выглядит глупо))) но программы аонов конца 80х начала 90х в 4к пзу возможностями не страдали "Сто дюжих коней под капот я запрятал, а прадед везде успевал на одном". Ушло то время, когда процессор с 4к пзу стоил ползарплаты инженера. Да, "проредить" программу на С дерганьем пина не удастся. Ну не буду я убивать время, творя программу на асме - я просто возьму другой процессор, пусть вдвое дороже, который умеет ногой дергать аппаратно через таймер и забуду об этой проблеме в принципе. Сэкономленное рабочее время стоит дороже, чем разница в цене процессора. Если вдруг мне придется пректировать устройство (с афигенно большим тиражом), в котором конечная программа будет на ассемблере - я все равно спроектирую ее на С, потом возьму ассемблерный результат компилятора и отрихтую уже его. Я на примере выше показал, как такой подход позволяет экономить время разработки. Переубеждать вас я не собираюсь. Цитата(Прохожий @ Mar 6 2008, 20:31)  Керниган, Брайан У., Ритчи, Деннис М. Язык программирования С, 2-е издание.: Ее можно легко найти в Интернете (достаточно спросить у гугля "Керниган Ритчи"), например вот или вот, но нужно именно второе издание! С момента выхода первого издания язык очень сильно изменился.
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 6 2008, 19:14
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(Сергей Борщ @ Mar 6 2008, 21:49)  Ее можно легко найти в Интернете (достаточно спросить у гугля "Керниган Ритчи"), например вот или вот, но нужно именно второе издание! С момента выхода первого издания язык очень сильно изменился. К сожалению, так и не научился читать с экрана, а если печатать 289 страниц формата А4, то потом неудобно читать, да и по деньгам приблизительно то же и выйдет. Не сочтите за рекламу, но книга достаточно хорошо издана, текст программок структурирован, рисунки внятные, формат самый подходящий. Мне, лично, так удобнее. К стати, что скажете о таком решении упр. 2.9 (подсчет числа единиц в байте) из этой книги? Код int bitcount (unsigned x) { int b=0; while (x&=(x-1)) b++; return b; }
Сообщение отредактировал Прохожий - Mar 6 2008, 19:17
|
|
|
|
|
Mar 7 2008, 09:16
|
Местный
  
Группа: Участник
Сообщений: 406
Регистрация: 1-03-06
Пользователь №: 14 821

|
Цитата(Прохожий @ Mar 6 2008, 20:14)  К стати, что скажете о таком решении упр. 2.9 (подсчет числа единиц в байте) из этой книги? Код int bitcount (unsigned x) { int b=0; while (x&=(x-1)) b++; return b; } я бы сказал вот так :-) Код int bitcount (unsigned x) { int b=0; while (x){ x &= (x-1); b++; } return b; }
|
|
|
|
|
Mar 7 2008, 19:51
|
Cундук
    
Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269

|
Цитата(andron86 @ Mar 7 2008, 12:16)  я бы сказал вот так :-) Код int bitcount (unsigned x) { int b=0; while (x){ x &= (x-1); b++; } return b; } Я сделал вот так: Код unsigned char bitcount (unsigned char x) { unsigned char b=0; if(x) { b=1; while (x&=(x-1)) b++; } return b; } После трансляции получил следующее: Код 979: unsigned char bitcount (unsigned char x) 0BA2 D912 RCALL 0xdc8 0BA4 52E6 MOVF 0xfe6, F, ACCESS 980: { 981: unsigned char b=0; 0BA6 6ADF CLRF 0xfdf, ACCESS 982: if(x) 0BA8 0EFE MOVLW 0xfe 0BAA 50DB MOVF 0xfdb, W, ACCESS 0BAC E011 BZ 0xbd0 983: { 984: b=1; 0BAE 0E01 MOVLW 0x1 0BB0 6EDF MOVWF 0xfdf, ACCESS 985: while (x&=(x-1)) b++; 0BB2 0EFE MOVLW 0xfe 0BB4 04DB DECF 0xfdb, W, ACCESS 0BB6 6E3C MOVWF 0x3c, ACCESS 0BB8 50D9 MOVF 0xfd9, W, ACCESS 0BBA 0FFE ADDLW 0xfe 0BBC 6EE9 MOVWF 0xfe9, ACCESS 0BBE 0EFF MOVLW 0xff 0BC0 20DA ADDWFC 0xfda, W, ACCESS 0BC2 6EEA MOVWF 0xfea, ACCESS 0BC4 503C MOVF 0x3c, W, ACCESS 0BC6 16EF ANDWF 0xfef, F, ACCESS 0BC8 50EF MOVF 0xfef, W, ACCESS 0BCA E002 BZ 0xbd0 0BCC 2ADF INCF 0xfdf, F, ACCESS 0BCE D7F1 BRA 0xbb2 986: } 987: return b; 0BD0 50DF MOVF 0xfdf, W, ACCESS 988: } 0BD2 52E5 MOVF 0xfe5, F, ACCESS 0BD4 D192 BRA 0xefa Компилятор МСС18, оптимизация включена. Кроме непонятно зачем вставленного MOVLW 0xfe в операторе if(х)... все остальное полностью соответствует концепции псевдостека, поддерживаемого этим компилятором. В связи с этим и некое разрастание кода.
Сообщение отредактировал Прохожий - Mar 7 2008, 19:53
|
|
|
|
Сообщений в этой теме
Kalina Выбор пути ... Assembler или C ? Mar 3 2008, 19:02 zltigo Цитата(Kalina @ Mar 3 2008, 22:02)
Для н... Mar 3 2008, 19:15 Vladimir_J Добрейшее время суток!!!
В свое время ... Mar 3 2008, 19:37 SasaVitebsk Вот чисто практические данные.
http://electronix.r... Mar 3 2008, 19:41 Omen_13 Очередная религиозная война назревает?
На асм... Mar 3 2008, 21:03 zltigo Цитата(Omen_13 @ Mar 4 2008, 00:03) Очере... Mar 3 2008, 21:05 Omen_13 zltigo, см. выше!
Добавлю еще:
Асм как язык ... Mar 3 2008, 21:29 Дон Амброзио Цитата(Omen_13 @ Mar 4 2008, 00:29) наско... Mar 3 2008, 22:45 Дон Амброзио ИМХО, ассемблер - это база, которую ДОСКОНАЛЬНО до... Mar 3 2008, 22:31 rv3dll(lex) Си так и не смог выучить - не дано наверное
но... Mar 4 2008, 06:42 ReAl Цитата(rv3dll(lex) @ Mar 4 2008, 08... Mar 4 2008, 07:10  rv3dll(lex) Цитата(ReAl @ Mar 4 2008, 10:10) Ну, это ... Mar 4 2008, 08:54   ReAl Цитата(rv3dll(lex) @ Mar 4 2008, 10... Mar 5 2008, 08:05 608 Цитата(Kalina @ Mar 3 2008, 23:02) Всем, ... Mar 4 2008, 07:01 Baser У вас в корне неправильное понимание вопроса: ... Mar 4 2008, 07:13 Dog Pawlowa Цитата(Baser @ Mar 4 2008, 11:13) Вот и в... Mar 4 2008, 07:27 tntsasha Сначала писала на асме. После того как пробывал на... Mar 4 2008, 09:50 researcher По теме:
http://ru.wikipedia.org/wiki/Си_(язык_про... Mar 4 2008, 12:00  zltigo Цитата(researcher @ Mar 4 2008, 15:00) Ту... Mar 4 2008, 16:34 Carbon 1. Си очень сильно экономит время разработки, экон... Mar 4 2008, 15:10 rv3dll(lex) тойота - управляй мечтой
жигули не ссы доедем))))... Mar 4 2008, 16:43 Сергей Борщ Цитата(rv3dll(lex) @ Mar 4 2008, 18... Mar 4 2008, 17:09 Kalina Да, вы меня убедили, что всё-таки С изучать прийдё... Mar 4 2008, 17:27 singlskv Цитата(Kalina @ Mar 4 2008, 20:27) как вы... Mar 4 2008, 19:22 Omen_13 8 битники останутся, только их ниша может сократит... Mar 4 2008, 17:49 vshemm У Си есть еще один большой плюс - портируемость . ... Mar 4 2008, 17:57 DimaD Kalina привет!!! Надо знать и Си, и ас... Mar 5 2008, 07:26 Kalina Цитата(DimaD @ Mar 5 2008, 10:26) Проще т... Mar 5 2008, 08:10  Сергей Борщ Цитата(Kalina @ Mar 5 2008, 10:10) Это оз... Mar 5 2008, 10:19   Kalina Цитата(Сергей Борщ @ Mar 5 2008, 13:19) о... Mar 5 2008, 11:00    Сергей Борщ Цитата(Kalina @ Mar 5 2008, 13:00) Значит... Mar 5 2008, 12:05     zltigo Цитата(Сергей Борщ @ Mar 5 2008, 15:05) ... Mar 5 2008, 12:32      upc2 Цитата(zltigo @ Mar 5 2008, 15:32) Перефр... Mar 5 2008, 12:47 DimaD Приведу пример на тех двух программистах, которые ... Mar 5 2008, 08:34 upc2 Цитата(Kalina @ Mar 3 2008, 22:02) Всем д... Mar 5 2008, 10:46 DimaD Kalin@ смелее переходите на Си. Я уже мигаю светод... Mar 5 2008, 11:24 Kalina Цитата(DimaD @ Mar 5 2008, 14:24) Я уже м... Mar 5 2008, 15:14  Сергей Борщ Цитата(Kalina @ Mar 5 2008, 17:14) Но сам... Mar 5 2008, 15:59   Kalina Цитата(Сергей Борщ @ Mar 5 2008, 18:59) Я... Mar 5 2008, 17:05    singlskv Цитата(Kalina @ Mar 5 2008, 20:05) Проэкт... Mar 5 2008, 18:39     Kalina Цитата(singlskv @ Mar 5 2008, 21:39) Наве... Mar 5 2008, 19:06      singlskv Цитата(Kalina @ Mar 5 2008, 22:06) Сейчас... Mar 5 2008, 19:27  zltigo Цитата(Kalina @ Mar 5 2008, 18:14) Но сам... Mar 5 2008, 17:25 DimaD Цитата(Kalina @ Mar 5 2008, 19:05) С одно... Mar 6 2008, 06:28 mart-13 Цитата(DimaD @ Mar 6 2008, 09:28) Вот име... Mar 6 2008, 07:50 Kalina Цитата(DimaD @ Mar 6 2008, 09:28) по пово... Mar 6 2008, 08:22  zltigo Цитата(Kalina @ Mar 6 2008, 11:22) Но сам... Mar 6 2008, 09:21   Kalina Цитата(zltigo @ Mar 6 2008, 12:21) У как ... Mar 6 2008, 10:05    zltigo Цитата(Kalina @ Mar 6 2008, 13:05) Наскол... Mar 6 2008, 10:25     mart-13 Цитата(zltigo @ Mar 6 2008, 13:25) Нет. И... Mar 6 2008, 10:53      zltigo Цитата(mart-13 @ Mar 6 2008, 13:53) ... Mar 6 2008, 14:41 DimaD Давайте обсудим эту тему и многое другое за ... Mar 6 2008, 08:38 Kalina Цитата(DimaD @ Mar 6 2008, 11:38) Давайте... Mar 6 2008, 08:53 rv3dll(lex) БЛИН если на то пошло всю память 51 контроллера мо... Mar 6 2008, 09:06 Carbon Можно измерять период подсчитывая импульсы аппарат... Mar 6 2008, 12:02 Сергей Борщ Цитата(Carbon @ Mar 6 2008, 14:02) Таким ... Mar 6 2008, 13:05  Carbon Цитата(Сергей Борщ @ Mar 6 2008, 16:05) Е... Mar 6 2008, 14:36 rv3dll(lex) усложню задачу - без использования таймера сложени... Mar 6 2008, 13:23  rv3dll(lex) Цитата(Сергей Борщ @ Mar 6 2008, 21:35) В... Mar 6 2008, 19:03   Demeny Цитата(Прохожий @ Mar 6 2008, 22:14) К ст... Mar 7 2008, 07:30   mdmitry Цитата(Прохожий @ Mar 6 2008, 22:14) Кодi... Mar 7 2008, 09:04  Kalina Цитата(Сергей Борщ @ Mar 6 2008, 21:49) в... Mar 6 2008, 20:31   Прохожий Цитата(Kalina @ Mar 6 2008, 23:31) Если н... Mar 6 2008, 21:19 Kalina Уважаемые форумчане, большое спаисбо за тот опы... Mar 6 2008, 18:00 Прохожий Цитата(Kalina @ Mar 6 2008, 21:00) Уважае... Mar 6 2008, 18:31 Pyku_He_oTTyda ЦитатаПрохожий
Спасибо! Хороший магазин с демо... Mar 7 2008, 05:14 Algol По поводу эффективного программирования на Си и дл... Mar 7 2008, 07:51 Demeny Цитата(Algol @ Mar 7 2008, 10:51) По пово... Mar 7 2008, 08:17  zltigo Цитата(Demeny @ Mar 7 2008, 11:17) Я плак... Mar 7 2008, 12:18
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|