Возможно без знакомства с ассемблером освоить Си?

Вопросы настройки, программирования, прошивки микроконтроллеров и микросхем программируемой логики
ATtiny13
Встал на лапы
Сообщения: 110
Зарегистрирован: Пт окт 21, 2011 15:05:18

Возможно без знакомства с ассемблером освоить Си?

Сообщение ATtiny13 »

Возможно ли без знакомства с ассемблером освоить Си самостоятельно

Читал статью на этом сайте http://easyelectronics.ru/category/avr- ... urs/page/3
но здесь сказано что это будет сложно и непонятно изучать си без знакомства с асамблером.
Хочу услышать ваше мнение по этому.
Прочел несколько тем о асамблер и мало что понял думаю сразу перейти к изучению си на этом сайте.


Если кто изучал си самостоятельно то посоветуйте ресурс если вы считаете что там лучше и более понятнее объяснено :write:
Спасибо
Реклама
Vov123
Опытный кот
Сообщения: 804
Зарегистрирован: Чт мар 12, 2009 16:31:05

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Vov123 »

Здесь сначала приводится пример на ассемблере,а потом этот же на С (для tiny 2313)

http://www.twirpx.com/file/28398/
Реклама
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение МитяРа »

ATtiny13 писал(а):Возможно ли без знакомства с ассемблером освоить Си самостоятельно
Думаю, что можно..
Каждый пишет на том языке, который считает более удобным для себя или для решаемой задачи..

Если просто сравнить два языка, то Си "абстрагирует" от низкоуровневых механизмов МК, а Асм наоборот - приближает к ним..

Мя на Асме пишу более 20 лет и за это время принимался освоить Си, но понял, что это "не моё"..
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Satyr »

ATtiny13 писал(а):Возможно ли без знакомства с ассемблером освоить Си самостоятельно
Конечно. Собсно, никакой прямой связи нету.
Но, для реально продвинутой отладки программ и анализа оптимизации знание ассемблера (тут не забываем, что это не язык как таковой, а мнемонический вид кода КАКОГО ЛИБО ОПРЕДЕЛЕННОГО процессора) обязательно.

Си учишь раз. А ассемблер для каждого ядра поновой.
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Satyr »

МитяРа писал(а): Мя на Асме пишу более 20 лет и за это время принимался освоить Си, но понял, что это "не моё"..
Патамушта старпер :)))
Нуачо ? Мне и самому уже западло всякие модные C# и .Net'ы даже смотреть -))
Реклама
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение МитяРа »

Satyr писал(а):Мне и самому уже западло всякие модные C# и .Net'ы даже смотреть
А и не смАтри на них и зомбояЩЫк выкини.. :)))
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Реклама
Аватара пользователя
Flasher
Мудрый кот
Сообщения: 1802
Зарегистрирован: Ср сен 07, 2011 21:40:30

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Flasher »

Осваивайте, только знайте, что при этом потолок освоения очень низок будет.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение YS »

Освоить Си - да, там, в общем, никакой связи нет. Но чтобы чувствовать архитектуру и писать оптимальные программы на том же Си, обязательно хотя бы иметь представление о целевом ассемблере.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
GP1
Поставщик валерьянки для Кота
Сообщения: 2401
Зарегистрирован: Пт май 23, 2008 19:32:22
Откуда: Россия, Волгоград
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение GP1 »

Поддерживаю на 100% все выше сказанное уважаемыми котами, от себя добавлю:
для мелких камней, типа той же tiny13, писать на асме как-то кошернее, но это мнение заскорузлого асмо-кота :)))

зы: я бы ещё рекомендовал почитать про Си здесь: http://arv.radioliga.com/
Чем дальше, тем больше становлюсь занудой...
Изображение
Аватара пользователя
BCluster
Собутыльник Кота
Сообщения: 2512
Зарегистрирован: Пн апр 06, 2009 19:33:29
Откуда: Молдова, Кишинев
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение BCluster »

Можно. Но элементарные знания о структуре процессора с которым работаешь иметь надо
vAv
Прорезались зубы
Сообщения: 221
Зарегистрирован: Пн июн 13, 2011 20:04:59
Откуда: Новочебоксарск
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение vAv »

Пиши на Си и никого не слушай. Если не хватит памяти - возьми камень с памятью побольше.
И еще один момент - многие вещи на асме реализовать сложнее чем на си. К примеру работу с числами с плавающей запятой.
SII
Вымогатель припоя
Сообщения: 635
Зарегистрирован: Пт янв 30, 2009 14:50:35
Откуда: Солнечногорск

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение SII »

При создании программ для "настоящих" компьютеров (на тех же персоналках, например), где используются полноценные операционные системы, знание ассемблера, вообще говоря, не требуется: ОС не только скрывает от программиста все низкоуровневые элементы аппаратуры, но даже не подпускает к ним. Фактически единственные области, где ассемблер может пригодиться на ПК -- это оптимизация критических участков кода (хороший программист-ассемблерщик напишет более эффективный код, чем даже самый лучший компилятор) и решение некоторых очень уж специфических задач.

Микроконтроллеры -- иное дело. Здесь программист напрямую имеет дело с аппаратурой, ему доступны все возможности аппаратуры. Хотя в большинстве случаев можно обойтись языком высокого уровня (в данном случае неважно, каким именно), в некоторых случаях без знакомства с ассемблером не обойтись. Кроме того, бывают случаи, когда без его знания невозможно отладить программу, написанную на том же Си. Наконец, ресурсы микроконтроллера намного ограниченнее, чем ПК, и поэтому не всякую задачу можно решить средствами языка высокого уровня: полученный код может банально не помещаться в памяти.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Satyr »

vAv писал(а):И еще один момент - многие вещи на асме реализовать сложнее чем на си.
Многие ? А есть немногие, которые легче ? :)))
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение hybroid »

ithappens.ru писал(а):Всё та же маленькая фирма по производству электроники. Чтобы на 100% загрузить производство и обеспечить пропитание сотрудниц, взялись за монтаж плат сторонней разработки. Утром начальник производства подходит к инженеру-электронщику с просьбой сделать приспособление для проверки готовой продукции. Задача тривиальная: организовать включение и выключение двух нагрузок по таймеру. Инженер занят другим делом, поэтому извлекает из стола какую-то пыльную плату с AVR ATmega32 на борту, два симистора, часовой кварц и вручает это новому технику со словами: «Если что — обращайся, но к концу дня чтоб работало».

Итак, к обеду всё собрано, написана примитивная прошивка в 20 строчек — только встроенные функции, без указателей, дефайнов и прочих ненужных технику сложностей. Нагрузки подключены. Что такое? Через десять минут минут теста в предельном режиме на испытуемом приборе начинает моргать питание. На бедного техника тут же накинулись:

Начальник производства: «У тебя весь монтаж соплями, сделай нормальную плату!»
Программер: «Ты прошивку делал в CodeVision, он явно криво компилирует. Поставь WinAVR + AVRStudio и Eclipse».
Главный инженер: «Этот С вообще какой-то непонятный. Перепиши на ассемблере, не ошибёшься!»

Пока парня не заставили делать кучу лишней работы, инженер-электронщик подходит к месту действия и видит «медленный» диод в импульсном блоке питания испытуемого изделия. Подносит палец, чувствуя тепло. Переворачивает испытуемую плату — отпаявшийся от перегрева диод выпадает, и в блоке питания происходят «необратимые разрушительные изменения с выделением тепла, света и углекислого газа». Инженер хвалит техника за хорошую работу, даёт начальнику производства указание заменить диод на более «быстрый» и выставить заказчику пятизначный счёт за решение многолетней проблемы непредсказуемых отказов блоков питания.
Напомнило..
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение YS »

А есть немногие, которые легче ?
Ну, например, преобразование байта в последовательный вид. Через brcs/lsr.
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Satyr »

YS писал(а):
А есть немногие, которые легче ?
Ну, например, преобразование байта в последовательный вид. Через brcs/lsr.
Через чего ? Далеко не все ископаемыми процессорами занимаются -))

Могу сказать, что на моем любимом M3 это делается еще легче и без необходимости прибегать к машинным кодам.
Аватара пользователя
МитяРа
Модератор
Сообщения: 11492
Зарегистрирован: Чт дек 11, 2008 14:52:26
Откуда: град Нижний

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение МитяРа »

Пришёл поручик Satyr и в теме начал витать запаХХХ АРМ-оФФФ.. :)))
[img]http://radiokot.ru/forum/download/file.php?id=93376[/img][i][color=#000080][size=85]Между людьми возникает напряжение, если у них разный потенциал...[/size][/color][/i]
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Satyr »

Насчет экзотических комманд, которые очень хочется вызывать...
За прочие компилеры не поручусь, а в IAR под все платформы есть такая чтука, как intrinsic операторы, через которые вся экзотика вытащена в С
Аватара пользователя
hybroid
Друг Кота
Сообщения: 8007
Зарегистрирован: Вс ноя 14, 2010 19:24:26
Откуда: Лукалэнд

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение hybroid »

Вообще какой-то некорректный вопрос. Многие, думаю, пишут под большие современные архитектуры ПК? :) Вы же не осваивали написание на ассемблере до изучения языков высокого уровня? Сомневаюсь, что вы знаете хотя бы половину "примочек", которые умеет ваш проц. Вам достаточно, что ваш компилятор "в теме". Зачем связывать в данном случае? Из-за того, что ассемблер для МК прост и МК достаточно мал и туп? Глупости.

Код на си - это листинг, написанный на языке программирования. В силу этого и при достаточно малой кривизне рук он читаем, расширяем, может быть весьма модульным и _включать_ в себя мнемоники ассемблера (превед, экзотические комманды) (многие, думаю, видели их в исходниках). Его легче поддерживать, с ним легче работать, его с можно портировать под другие архитектуры почти без глубокого запоя программиста и т.д.
Код на ассемблере - это код на ассемблере. Это удобоваримые человеком команды процессору. Со всеми вытекающими последствиями.

Многие не читают даташит на свой МК, о каком же Си и ассемблере может идти речь, если люди вообще не понимают, как работает МК и что нужно делать, чтобы заставлять его работать.
Аватара пользователя
Satyr
Друг Кота
Сообщения: 7439
Зарегистрирован: Чт ноя 04, 2010 01:56:36
Откуда: г. Москва

Re: Возможно без знакомства с ассемблером освоить Си?

Сообщение Satyr »

А чо?
На "настоящих ПК" я активно пользовал асм для отладки -)))

отлаживаем DLL, которая пользуется из сторонней программы, чей код недоступен и отладка, так сказать, затруднена.
В интересующем месте рисуем типа (зависит от компилера) __asm { int 3 } , компилем, подкладываем, запускаем без всякого отладчика.

Ждем пока всплывет сообщение, что все пропало и соглашаемся запустить отладчик по умолчанию. Дальше любуемся на свой исзодный код и все значения переменных -)))
Ну, символы, конечно, надо в правильные места разложить предварительно.
Закрыто

Вернуться в «Микроконтроллеры и ПЛИС»