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

 
 
> Выбор пути ... 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
 
Start new topic
Ответов
rv3dll(lex)
сообщение Mar 6 2008, 17:57
Сообщение #2


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

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



из своего процессорного опыта - это было по необходимости - так я рассыпушечник 133-164ла3-7 и всё такое ,,,,,,,,,,,,,,,,,CPLD потом FPGA )))) может у меня был такой неправильный подход - все процессы должны выполняться параллельно - в процессоре псевдо параллельно

а именно нарисовать схему = нарисовать эпюры сигналов а далее команды по временной оси - вопрос с чередованием не снят

любые операции можно проредить командами с периферией

сейчас выглядит глупо))) но программы аонов конца 80х начала 90х в 4к пзу возможностями не страдали
сам писал по 400 кбайт на ассемблере под TMS
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 6 2008, 18:49
Сообщение #3


Гуру
******

Группа: Модераторы
Сообщений: 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)
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Mar 6 2008, 19:14
Сообщение #4


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
Go to the top of the page
 
+Quote Post
andron86
сообщение Mar 7 2008, 09:16
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 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;
}
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Mar 7 2008, 19:51
Сообщение #6


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
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- 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


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

 


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


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