roboforum.ru

Технический форум по робототехнике.

C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Программирование микроконтроллеров AVR, PIC, ARM.
Разработка и изготовление печатных плат для модулей.

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Сообщение avr123.nm.ru » 03 дек 2009, 11:01

Читабельность в разы. Как измерили то ?
Аватара пользователя
avr123.nm.ru
отсылающий читать курс
 
Сообщения: 14195
Зарегистрирован: 06 ноя 2005, 04:18
Откуда: Москва
Предупреждения: -8

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Сообщение executer » 03 дек 2009, 11:04

А мне трехэтажные комманды в объектно-ориентированных языках ну никак не нравятся :no:
Аватара пользователя
executer
 
Сообщения: 784
Зарегистрирован: 30 янв 2009, 01:24
Откуда: Запорожье
прог. языки: Си, AvrASM, STL, САС, учу Си++
ФИО: Павел

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Сообщение blindman » 03 дек 2009, 11:07

Интересно было бы посмотреть для чего C++ применяется.
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Сообщение yozik0ff » 03 дек 2009, 11:43

Просто я привык писать на С++. У меня уже алгоритмы паттерны наработаны.
Раньше писал на асме для авр - казалась что вот оно - контроль над регистрами. Не доверял компилятору. Потом, плавно перешел на С, не знаю почему. Устал видимо держать все в голове.

А тут, год назад начал для своей квартиры собирать "приточку" (система автоматического подачи свежего воздуха в квартиру) пробурил дырки в стене (15см в диаметре) сделал воздуховоды, вентилятор, глушитель, калорифер - адская установка получилось!
Но вот чтобы ей управлять - нужен некий "контроллер" который стоит 15тыщь рублей.
Подумал подумал, нафиг нам такой контроллер.
Стал собирать свой.
На борту атмега 128.
Заслонки двигаем сервами мощными.
ЖКИ мониторчег.
Датчики температуры. (улица, болкон, калорифер, квартира)
датчик давления. (отслеживание загрезнения фильтра)
релюхи для включения калорифера и вентилятора
---

Нужно было сделать систему, которя в определенный момент по расписанию включала и выключала вентилятор, шевилила заслонками, в зависемости от температуры включала калорифер. Все это выводить на ЖКИ. ну и нормальный интерфес чтобы был.
Вродебы все просто, задача ясна.
писать стал на "С".
Пошло быстро и легко. Сделал расписание включения устройств. вывод на ЖКИ информации. плавно программа переросла в монстра
--
дальше, когда мне потребовалось зафигачить меню для тонкой настройки приточки... мой мозг поплыл, ибо я не привык процедурно программировать.
--
взяв в пивка, и мое сознание выдало. а не попробывать бы нам С++ залить.
Сказано сделлано. настроен компилятор использую WinAVR среда CodeBlocks
В итоге.
Программа стала читабельней, полностью отделены мухи от коклет. Тоесть железячки в одном месте. логика программы в другом. Никак они между собой не пересекаются. Связь только через интерфес.

Выглядит что то вроде этого:
Код: Выделить всёРазвернуть
int main(void)
{
    cHardware hardware;
    hardware.create();
    hardware.run();//запуск основоного процесса
    return 0;
}


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

Вот код оброботчка гланого цыкла жилизячег
Код: Выделить всёРазвернуть
void cHardware :: run (void)
{
   /* основной цикл программы
   */
   while (1)   
   {
      /* сначало передаем управление железу
      */
      servo.      process();//движение серв
      led.      process();//динамическая индикация светодиодов
      LCD.      process();//фоновая отрисовка дисплея
      keyBoard.   process();      
      /* отработка логики программы
      */
      application.process();
      }
}


Все обстрагировался до основания. Наверно всем покажется это дикостью. Но мне нравится!
Аватара пользователя
yozik0ff
 
Сообщения: 440
Зарегистрирован: 28 авг 2005, 08:30
Откуда: деревня - Тюмения
прог. языки: с++

Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!

Сообщение Snable » 03 дек 2009, 12:00

ИМХО, для некритичных ко времени систем с кучей памяти - самое оно :good:
Тоже крупные проекты на Си мозг взрывают... Их без "спец. инвентаря" и не разберешь :-)
А вот Си++ (до n00000 строк кода) разбирается вполне ничего :-)
Аватара пользователя
Snable
 
Сообщения: 395
Зарегистрирован: 21 мар 2009, 20:06
Откуда: Город на Неве
прог. языки: GNU C++ with Qt / C# via .NET
ФИО: Александр

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение cjA » 17 июл 2010, 06:27

раньше была такая шняга- МК-65, програмилась в машинных кодах, я на ней несколько курсовиков написал.
По поводу AVR- это риск процессор, один байт, одна комманда, один такт, система команд там настолько легкая, что любой желающий на своем языке программирования любимом сможет написать для него транслятор с языка любимого, а потом хоть в ворде писать. Ну а я лучьше на Ада попишу, только не поддерживается она ничем.
cjA
 
Сообщения: 468
Зарегистрирован: 19 мар 2010, 20:11

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение =DeaD= » 17 июл 2010, 08:14

cjA писал(а):По поводу AVR - система команд там настолько легкая, что любой желающий на своем языке программирования любимом сможет написать для него транслятор с языка любимого, а потом хоть в ворде писать. Ну а я лучьше на Ада попишу, только не поддерживается она ничем.

Напиши транслятор с Ада в машинные коды AVR ;) 8)
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение cjA » 17 июл 2010, 08:58

не возьмусь, bascom уже есть, для программирования четырех портов больше и не надо.
но есть же трансляторы написаные на джава, которые джаву в понимаемый ARMами код переводят? ARMы кстати тоже риск процессоры.

Добавлено спустя 3 минуты 19 секунд:
Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!
По стандарту языка Ада, он уже должен понимать машинный код процессора, только для AVR пока еще не реализовал это никто. ;(
cjA
 
Сообщения: 468
Зарегистрирован: 19 мар 2010, 20:11

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение galex1981 » 17 июл 2010, 09:01

Ну вот и будешь первым ;)
if(!Operate) Read(pDatasheet);
Аватара пользователя
galex1981
 
Сообщения: 4363
Зарегистрирован: 04 дек 2008, 22:44
Откуда: Камышин
Skype: galk-aleksandr1
прог. языки: Kotlin, Java, C, C++, Assm, BasCom, VB, php
ФИО: Галкин Александр Владимирович

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение cjA » 17 июл 2010, 09:12

http://www.aonix.com
понимает моторолу и интел, правда размер кода ограничен в бесплатной версии
2 galex1981 - может быть, чего от скуки не сделаешь
cjA
 
Сообщения: 468
Зарегистрирован: 19 мар 2010, 20:11

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение blindman » 17 июл 2010, 09:43

cjA писал(а):может быть, чего от скуки не сделаешь

Ничего наверно не сделаешь. Тем более если не удосужился поискать что уже сделано
Проект [[Open Robotics]] - универсальные модули для построения роботов
Модули Open Robotics можно приобрести в магазине shop.roboforum.ru

Day OFF? You must be pulling my leg! Stop making humor before someone sees you, fool!

Аватара пользователя
blindman
 
Сообщения: 4130
Зарегистрирован: 29 апр 2008, 21:15
Откуда: Хабаровск
прог. языки: C,C++,Assembler,PHP,Javascript,Ruby, SPIN,Java(?)
ФИО: Андрей Юрьевич

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение cjA » 17 июл 2010, 10:03

наверное, да. но не поэтому. когда-то учил человечков по экрану ходить- даже какой то скриптовый язык написал.
ну и когда-то мк-65 в машинных кодах прогил.
Я читал даташит для тини45, там всего около сотни команд, его реально прогить в машкодах в каком нибудь хексредакторе.

В любом случае я считаю что если хочешь прогить что-нибудь, то с машкомандами и архитектурой нужно ознакомится.

Добавлено спустя 7 минут 28 секунд:
Re: C vs ASM -прочитай и никогда не поднимай эту тему на форуме!
ты не поверишь, когда то давно компьютеры собирали люди, а не роботы, и не на заводах, а в гаражах. Почитай откуда у Гейтца 40 миллиардов.
cjA
 
Сообщения: 468
Зарегистрирован: 19 мар 2010, 20:11

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение =DeaD= » 17 июл 2010, 10:35

cjA писал(а):Почитай откуда у Гейтца 40 миллиардов.

Откуда по вашему? :oops:
Проект [[Open Robotics]] - Универсальные модули для построения роботов
Аватара пользователя
=DeaD=
 
Сообщения: 24218
Зарегистрирован: 06 окт 2004, 18:01
Откуда: Ебург
прог. языки: C++ / PHP / 1C
ФИО: Антон Ботов

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение cjA » 17 июл 2010, 10:47

он написал интепретатор бэйсика для интел8086
ну а потом мс-дос для первой айбиэм-писи, ну и понеслось. Те 8086 были не намного сложнее чем атмега.
cjA
 
Сообщения: 468
Зарегистрирован: 19 мар 2010, 20:11

Re: C vs ASM -прочитай и никогда не поднимай эту тему на фор

Сообщение Angel71 » 17 июл 2010, 12:08

напиши тоже интерпретатор бэйсика, мс-дос (это вообще сейчас уровень курсовой),... :D может тоже озолотишся
Аватара пользователя
Angel71
 
Сообщения: 10668
Зарегистрирован: 18 апр 2009, 22:18
Предупреждения: -1

Пред.След.

Вернуться в Микроконтроллеры

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 14