Страница 1 из 3
Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 15:53:29
ATtiny13
Возможно ли без знакомства с ассемблером освоить Си самостоятельно
Читал статью на этом сайте
http://easyelectronics.ru/category/avr- ... urs/page/3
но здесь сказано что это будет сложно и непонятно изучать си без знакомства с асамблером.
Хочу услышать ваше мнение по этому.
Прочел несколько тем о асамблер и мало что понял думаю сразу перейти к изучению си на этом сайте.
Если кто изучал си самостоятельно то посоветуйте ресурс если вы считаете что там лучше и более понятнее объяснено
Спасибо
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 16:04:03
Vov123
Здесь сначала приводится пример на ассемблере,а потом этот же на С (для tiny 2313)
http://www.twirpx.com/file/28398/
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 16:08:11
МитяРа
ATtiny13 писал(а):Возможно ли без знакомства с ассемблером освоить Си самостоятельно
Думаю, что можно..
Каждый пишет на том языке, который считает более удобным для себя или для решаемой задачи..
Если просто сравнить два языка, то Си "абстрагирует" от низкоуровневых механизмов МК, а Асм наоборот - приближает к ним..
Мя на Асме пишу более 20 лет и за это время принимался освоить Си, но понял, что это "не моё"..
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 16:14:59
Satyr
ATtiny13 писал(а):Возможно ли без знакомства с ассемблером освоить Си самостоятельно
Конечно. Собсно, никакой прямой связи нету.
Но, для реально продвинутой отладки программ и анализа оптимизации знание ассемблера (тут не забываем, что это не язык как таковой, а мнемонический вид кода КАКОГО ЛИБО ОПРЕДЕЛЕННОГО процессора) обязательно.
Си учишь раз. А ассемблер для каждого ядра поновой.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 16:16:09
Satyr
МитяРа писал(а):
Мя на Асме пишу более 20 лет и за это время принимался освоить Си, но понял, что это "не моё"..
Патамушта старпер
Нуачо ? Мне и самому уже западло всякие модные C# и .Net'ы даже смотреть -))
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 16:23:50
МитяРа
Satyr писал(а):Мне и самому уже западло всякие модные C# и .Net'ы даже смотреть
А и не смАтри на них и зомбояЩЫк выкини..

Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 16:26:51
Flasher
Осваивайте, только знайте, что при этом потолок освоения очень низок будет.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Ср янв 11, 2012 17:35:16
YS
Освоить Си - да, там, в общем, никакой связи нет. Но чтобы чувствовать архитектуру и писать оптимальные программы на том же Си, обязательно хотя бы иметь представление о целевом ассемблере.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 07:40:31
GP1
Поддерживаю на 100% все выше сказанное уважаемыми котами, от себя добавлю:
для мелких камней, типа той же tiny13, писать на асме как-то кошернее, но это мнение заскорузлого асмо-кота
зы: я бы ещё рекомендовал почитать про Си здесь:
http://arv.radioliga.com/
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 09:46:50
BCluster
Можно. Но элементарные знания о структуре процессора с которым работаешь иметь надо
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 10:40:53
vAv
Пиши на Си и никого не слушай. Если не хватит памяти - возьми камень с памятью побольше.
И еще один момент - многие вещи на асме реализовать сложнее чем на си. К примеру работу с числами с плавающей запятой.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 10:43:27
SII
При создании программ для "настоящих" компьютеров (на тех же персоналках, например), где используются полноценные операционные системы, знание ассемблера, вообще говоря, не требуется: ОС не только скрывает от программиста все низкоуровневые элементы аппаратуры, но даже не подпускает к ним. Фактически единственные области, где ассемблер может пригодиться на ПК -- это оптимизация критических участков кода (хороший программист-ассемблерщик напишет более эффективный код, чем даже самый лучший компилятор) и решение некоторых очень уж специфических задач.
Микроконтроллеры -- иное дело. Здесь программист напрямую имеет дело с аппаратурой, ему доступны все возможности аппаратуры. Хотя в большинстве случаев можно обойтись языком высокого уровня (в данном случае неважно, каким именно), в некоторых случаях без знакомства с ассемблером не обойтись. Кроме того, бывают случаи, когда без его знания невозможно отладить программу, написанную на том же Си. Наконец, ресурсы микроконтроллера намного ограниченнее, чем ПК, и поэтому не всякую задачу можно решить средствами языка высокого уровня: полученный код может банально не помещаться в памяти.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 10:45:40
Satyr
vAv писал(а):И еще один момент - многие вещи на асме реализовать сложнее чем на си.
Многие ? А есть немногие, которые легче ?

Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 10:49:32
hybroid
ithappens.ru писал(а):Всё та же маленькая фирма по производству электроники. Чтобы на 100% загрузить производство и обеспечить пропитание сотрудниц, взялись за монтаж плат сторонней разработки. Утром начальник производства подходит к инженеру-электронщику с просьбой сделать приспособление для проверки готовой продукции. Задача тривиальная: организовать включение и выключение двух нагрузок по таймеру. Инженер занят другим делом, поэтому извлекает из стола какую-то пыльную плату с AVR ATmega32 на борту, два симистора, часовой кварц и вручает это новому технику со словами: «Если что — обращайся, но к концу дня чтоб работало».
Итак, к обеду всё собрано, написана примитивная прошивка в 20 строчек — только встроенные функции, без указателей, дефайнов и прочих ненужных технику сложностей. Нагрузки подключены. Что такое? Через десять минут минут теста в предельном режиме на испытуемом приборе начинает моргать питание. На бедного техника тут же накинулись:
Начальник производства: «У тебя весь монтаж соплями, сделай нормальную плату!»
Программер: «Ты прошивку делал в CodeVision, он явно криво компилирует. Поставь WinAVR + AVRStudio и Eclipse».
Главный инженер: «Этот С вообще какой-то непонятный. Перепиши на ассемблере, не ошибёшься!»
Пока парня не заставили делать кучу лишней работы, инженер-электронщик подходит к месту действия и видит «медленный» диод в импульсном блоке питания испытуемого изделия. Подносит палец, чувствуя тепло. Переворачивает испытуемую плату — отпаявшийся от перегрева диод выпадает, и в блоке питания происходят «необратимые разрушительные изменения с выделением тепла, света и углекислого газа». Инженер хвалит техника за хорошую работу, даёт начальнику производства указание заменить диод на более «быстрый» и выставить заказчику пятизначный счёт за решение многолетней проблемы непредсказуемых отказов блоков питания.
Напомнило..
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 11:30:28
YS
А есть немногие, которые легче ?
Ну, например, преобразование байта в последовательный вид. Через brcs/lsr.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 11:35:31
Satyr
YS писал(а):А есть немногие, которые легче ?
Ну, например, преобразование байта в последовательный вид. Через brcs/lsr.
Через чего ? Далеко не все ископаемыми процессорами занимаются -))
Могу сказать, что на моем любимом M3 это делается еще легче и без необходимости прибегать к машинным кодам.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 11:40:47
МитяРа
Пришёл поручик
Satyr и в теме начал витать запаХХХ АРМ-оФФФ..

Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 11:53:00
Satyr
Насчет экзотических комманд, которые очень хочется вызывать...
За прочие компилеры не поручусь, а в IAR под все платформы есть такая чтука, как intrinsic операторы, через которые вся экзотика вытащена в С
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 11:58:42
hybroid
Вообще какой-то некорректный вопрос. Многие, думаю, пишут под большие современные архитектуры ПК?

Вы же не осваивали написание на ассемблере до изучения языков высокого уровня? Сомневаюсь, что вы знаете хотя бы половину "примочек", которые умеет ваш проц. Вам достаточно, что ваш компилятор "в теме". Зачем связывать в данном случае? Из-за того, что ассемблер для МК прост и МК достаточно мал и туп? Глупости.
Код на си - это листинг, написанный на языке программирования. В силу этого и при достаточно малой кривизне рук он читаем, расширяем, может быть весьма модульным и
_включать_ в себя мнемоники ассемблера (превед, экзотические комманды) (многие, думаю, видели их в исходниках). Его легче поддерживать, с ним легче работать, его с можно портировать под другие архитектуры почти без глубокого запоя программиста и т.д.
Код на ассемблере - это код на ассемблере. Это удобоваримые человеком команды процессору. Со всеми вытекающими последствиями.
Многие не читают даташит на свой МК, о каком же Си и ассемблере может идти речь, если люди вообще не понимают, как работает МК и что нужно делать, чтобы заставлять его работать.
Re: Возможно без знакомства с ассемблером освоить Си?
Добавлено: Чт янв 12, 2012 12:27:48
Satyr
А чо?
На "настоящих ПК" я активно пользовал асм для отладки -)))
отлаживаем DLL, которая пользуется из сторонней программы, чей код недоступен и отладка, так сказать, затруднена.
В интересующем месте рисуем типа (зависит от компилера) __asm { int 3 } , компилем, подкладываем, запускаем без всякого отладчика.
Ждем пока всплывет сообщение, что все пропало и соглашаемся запустить отладчик по умолчанию. Дальше любуемся на свой исзодный код и все значения переменных -)))
Ну, символы, конечно, надо в правильные места разложить предварительно.