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

 
 
5 страниц V  « < 3 4 5  
Reply to this topicStart new topic
> Выбор пути ... Assembler или C ?
Прохожий
сообщение Mar 6 2008, 18:31
Сообщение #61


Cундук
*****

Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269



Цитата(Kalina @ Mar 6 2008, 21:00) *
Уважаемые форумчане, большое спаисбо a14.gif за тот опыт работы с языками программирования, которым вы поделелись. Кто бы что не говорил, а знать, конечно, необходимо оба языка, иначе никогда не будет права выбора, так как выбирать будет не из чего smile.gif. Конечным принятым решением было начало освоения С.
P.S. Какую литературу вы могли бы посоветать для начинающего? И ваше мнение о книге "Программирование на языке C для AVR и PIC микроконтроллеров" Шпак Ю.А.?

Эту книгу советовали на этой площадке неоднократно, но я не поленюсь и посоветую ее Вам лишний раз:
Керниган, Брайан У., Ритчи, Деннис М.
Язык программирования С, 2-е издание.: Пер. с англ. - М.: Издательский дом "Вильямс", 2007. - 304 с.: ил. - Парал. тит. англ.
ISBN 979-5-8459-0891-9 (рус.)
ББК 32.973.26-016.2.75
К36
УДК 004.438
Покупал здесь приблизительно за 300 руб. Может есть где-нибудь еще подешевле...
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Mar 6 2008, 18:49
Сообщение #62


Гуру
******

Группа: Модераторы
Сообщений: 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
rv3dll(lex)
сообщение Mar 6 2008, 19:03
Сообщение #63


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

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



Цитата(Сергей Борщ @ Mar 6 2008, 21:35) *
В таких случаях я обычно говорю "И чтобы он еще за пивом бегал!""Сто дюжих коней под капот я запрятал, а прадед везде успевал на одном".
Ушло то время, когда процессор с 4к пзу стоил ползарплаты инженера. Да, "проредить" программу на С дерганьем пина не удастся. Ну не буду я убивать время, творя программу на асме - я просто возьму другой процессор, пусть вдвое дороже, который умеет ногой дергать аппаратно через таймер и забуду об этой проблеме в принципе. Сэкономленное рабочее время стоит дороже, чем разница в цене процессора. Если вдруг мне придется пректировать устройство (с афигенно большим тиражем), в котором конечная программа будет на ассемблере - я все равно спроектирую ее на С, потом возьму ассемблерный результат компилятора и отрихтую уже его. Я на примере выше показал, как такой подход позволяет экономить время разработки. Переубеждать вас я не собираюсь.


я понял что это не моё и ушел сначала проц пдюс логика потом логика в проце а сейчас и программист пишет своё а я своё ))) и ответ на тему в 90 процентов случаев всё можно написать на СИ в 5 прочентах на ассемблере а в 5 оставшихся в грамотном подходе проектирования
и ещё в плисинах использую свой кодовый язык - при написании своего процессора - в плисинахпамять двупортовая - поэтому на 1 блок 4 кбита в альтере например вешаю 2 проца с разных сторон)) работа в кодах по таблице - это даже ниже ассемблера)))
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Mar 6 2008, 19:14
Сообщение #64


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
Kalina
сообщение Mar 6 2008, 20:31
Сообщение #65


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

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



Цитата(Сергей Борщ @ Mar 6 2008, 21:49) *
вот или вот, но нужно именно второе издание!


Большое спасибо за ссылки, Керниган понятно и просто объясняет, приводя большое количество примеров. Уже печатаю smile.gif !

Цитата(Прохожий @ Mar 6 2008, 22:14) *
да и по деньгам приблизительно то же и выйдет.


Если не секрет, где вы книги покупаете?

Сообщение отредактировал Kalina - Mar 6 2008, 20:35
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Mar 6 2008, 21:19
Сообщение #66


Cундук
*****

Группа: Участник
Сообщений: 1 478
Регистрация: 13-11-06
Из: Ростов-на-Дону
Пользователь №: 22 269



Цитата(Kalina @ Mar 6 2008, 23:31) *
Если не секрет, где вы книги покупаете?

А Вы по моей ссылке пройдите. Это книжный интернет-магазин. Оплата наложенным платежом.
Go to the top of the page
 
+Quote Post
Pyku_He_oTTyda
сообщение Mar 7 2008, 05:14
Сообщение #67


Профессионал
*****

Группа: Свой
Сообщений: 1 751
Регистрация: 4-08-05
Из: Великие Луки
Пользователь №: 7 360



Цитата
Прохожий

Спасибо! Хороший магазин с демократичными ценами.


--------------------
Андрей Смирнов
Go to the top of the page
 
+Quote Post
Demeny
сообщение Mar 7 2008, 07:30
Сообщение #68


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Прохожий @ Mar 6 2008, 22:14) *
К стати, что скажете о таком решении упр. 2.9 (подсчет числа единиц в байте) из этой книги?
Код
int bitcount (unsigned x)
{
int b=0;
while (x&=(x-1)) b++;
return b;
}

Решение неправильное. Для числа 0x80, например, результат равен 0.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
Algol
сообщение Mar 7 2008, 07:51
Сообщение #69


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

Группа: Свой
Сообщений: 140
Регистрация: 7-04-05
Из: Россия, Владимир
Пользователь №: 3 941



По поводу эффективного программирования на Си и для снятия многих вопросов из этой темы посоветую прочитать статью
Си без Си
Go to the top of the page
 
+Quote Post
Demeny
сообщение Mar 7 2008, 08:17
Сообщение #70


Знающий
****

Группа: Свой
Сообщений: 648
Регистрация: 11-02-06
Из: Санкт-Петербург
Пользователь №: 14 237



Цитата(Algol @ Mar 7 2008, 10:51) *
По поводу эффективного программирования на Си и для снятия многих вопросов из этой темы посоветую прочитать статью
Си без Си

Цитата
Операторы ветвления.
Эти операторы встречаются в программах наиболее часто и, одновременно с этим, наиболее часто являются источником ошибок в программах.
............................
Сравнивая операторы while и do… while можно заметить, что второй оператор имеет на одну команду перехода меньше по сравнению с первым и, стало быть, его использование более предпочтительно.
.............................
Совет по оптимизации (C, asm): старайтесь там, где возможно, использовать оператор do…while.

crying.gif
Я плакалъ ... Керниган с Ритчей отдыхают.


--------------------
Сделано в Китае. Упаковано в России.
Go to the top of the page
 
+Quote Post
mdmitry
сообщение Mar 7 2008, 09:04
Сообщение #71


Начинающий профессионал
*****

Группа: Свой
Сообщений: 1 215
Регистрация: 25-10-06
Из: СПб
Пользователь №: 21 648



Цитата(Прохожий @ Mar 6 2008, 22:14) *
Код
int bitcount (unsigned x)
{
int b=0;
while (x&=(x-1)) b++;
return b;
}

Посмотрите книгу "Алгоритмические трюки для программистов" Генри Уоррен


--------------------
Наука изощряет ум; ученье вострит память. Козьма Прутков
Go to the top of the page
 
+Quote Post
andron86
сообщение Mar 7 2008, 09:16
Сообщение #72


Местный
***

Группа: Участник
Сообщений: 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
zltigo
сообщение Mar 7 2008, 12:18
Сообщение #73


Гуру
******

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



Цитата(Demeny @ Mar 7 2008, 11:17) *
Я плакалъ ... Керниган с Ритчей отдыхают.

Совершенно правильные обыденные вещи. Степень влияния на результат у прилично оптимизирующих компиляторов должна быть никакой, но тем не менее дела обстоят именно так.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Прохожий
сообщение Mar 7 2008, 19:51
Сообщение #74


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

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

 


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


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