Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Pascal для AVR
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > MCS51, AVR, PIC, STM8, 8bit
Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11
zltigo
Цитата(zhevak @ Dec 16 2008, 13:19) *
nill. Но это ничего не значит.

Кстати, о nill - это одна из немногих 'паскалевских' вещей, которую для 'правильности' следовало иметь в С/C++. Отсутствие в C/C++ ключевого слова для этого создает лишние непонятки и путаницу.
Legotron
Вопрос Pascal для микроконтроллеров был для меня актуален лет 6 назад.
Потом меня ткнули носом в Си и сказали чтобы не "маялся фигней" разыскивая Паскали и Бейсики...
Я огорчился сначала, но сейчас НИСКОЛЬКО не жалею, и считаю Си очень красивым и лаконичным языком в своем классе!
Народ, "Pascal для AVR" это бред и изначально флудовая тема...
учите Си и будет вам счастье smile.gif
Переборите себя.. тем более что написания приличных программ для AVR не требует от вас сверхзнания языка, и без C++ тоже можно обойтись.
Большую часть времени вы все равно потратите на изучение особенностей платформы и компилятора (всяких фичей и приблуд)
А обсуждение скобок там всяких вообще "детский сад".. милионы людей пишут на Си и не жалуются, вспомните потом мои слова... синтаксис Си вам потом еще нравиться будет.. Этим надо заболеть smile.gif
zhevak
Цитата(zltigo @ Dec 16 2008, 15:37) *
Кстати, о nill - это одна из немногих 'паскалевских' вещей, которую для 'правильности' следовало иметь в С/C++. Отсутствие в C/C++ ключевого слова для этого создает лишние непонятки и путаницу.

(я там ошибся, правильно -- nil)
Хм, интересно. А можно поподпробнее? Ведь есть null и void, и их вполне хватает для однозначного обозначения сущностей. Что дополнительно даст введение в язык nil ?
zltigo
Цитата(zhevak @ Dec 16 2008, 14:15) *
Ведь есть null....

Да вот нету NULL в языке совсем нет sad.gif это просто заплатка МАКРОС для C логично (void *)0 а для С++ вообще 0. Как-то помнится на форуме уже по этому поводу разговор достаточно подробный был.
DSIoffe
Цитата("zltigo")
В общем для 15 минутной лекции перед "домохозяйками" (к коим в 60x относились почти все sad.gif ) очень хороший ход.

Я зарекался писать в эту тему, но вот это - дальше некуда. Интересно, сколько народу из тех, кто имел доступ к компьютерам в 60е, можно назвать домохозяйками? Даже в очень больших кавычках?
Dog Pawlowa
Цитата(DSIoffe @ Dec 16 2008, 18:10) *
Интересно, сколько народу из тех, кто имел доступ к компьютерам в 60е, можно назвать домохозяйками?

Одно другому не противоречит. Доступа не было, а язык программирования читали на любых курсах повышения квалификации для всех - от учителей до инженеров по технике безопасности.
_Pasha
Цитата(Dog Pawlowa @ Dec 16 2008, 21:08) *
Доступа не было, а язык программирования читали на любых курсах

Добавлю - огромное число программистов вплоть до конца 80-х работали без машины, в оффлайне тсзать. А теперь представим себе ситуевину, что в этом случае спасет мир: паскаль с человеческим лицом или кракозябристый ЦЕ ? Такшта курсы домохозяек неспроста, видать...
zltigo
Цитата(DSIoffe @ Dec 16 2008, 17:10) *
Я зарекался писать в эту тему, но вот это - дальше некуда. Интересно, сколько народу из тех, кто имел доступ к компьютерам в 60е, можно назвать домохозяйками?

Именно те, кто не имел доступ к компьютеру и были с точки зрения навыков программирования типичными "домохозяйками". Вот для такого полного 0 и толкали паскалевский стиль - типа все просто на родном английском языке почти. Тут дело даже, как уже выше заметили, не в том будут они программировать или нет, а именно в толковывании массам, самой мысли, что программрование это вполне доступно. Паскаль толкали и как язык описания алгоритмов - потом дескать кодировщики переведут во что нибудь. Те, кто имел доступ к Компьютерам особо и не нуждались в нем (как и сейчас wink.gif smile.gif).
zhevak
Цитата(Dog Pawlowa @ Dec 16 2008, 22:08) *
Одно другому не противоречит. Доступа не было, а язык программирования читали на любых курсах повышения квалификации для всех - от учителей до инженеров по технике безопасности.

Да были времена... Помню один наш препод (к великому сожалению, его давно нет в живых. Редкой души и качества был человек...) прежде чем подпускать к компу, принимал зачет на знание клавиатуры. А как выучить раскладку, если компов было... э-э, один на все заведение? Рисовали на развернутом тетрадном листе квадратики и вписывали туда буквы. Потом по этим буквам учились ставить пальчики. В какой-то момент моему приятелю стукнула идея -- сделать трехмерную клаву, на кнопочки которой можно было даже нажимать. Он вырезал из сантиметрового поролона кубики и приклеил их на фанерку, а на кубики сверху приклеил картонки с буквами. Получилась фантастическая зашибись клавиатура...
Вот так и учились программировать.

ЗЫ
Кто здесь есть из Ебурга, помяните имя В.Г.Стефановича добрым словом.
_Pasha
Цитата(zltigo @ Dec 16 2008, 23:13) *
Именно те, кто не имел доступ к компьютеру и были с точки зрения навыков программирования типичными "домохозяйками". Вот для такого полного 0 и толкали паскалевский стиль

Да уж ...
НИПИ "Союз", НИПИ "АСУТрансГаз"
Нули, конечно cranky.gif
zltigo
Цитата(_Pasha @ Dec 16 2008, 22:57) *
НИПИ "Союз", НИПИ "АСУТрансГаз"

О чем Вы это? О том, что в конце 60 в этих конторах все поголовно лабали на паскале программы "союзного массштаба" сидя за майфреймовскими терминалами?
Или о том, что в 80х немалое число бездельников сидя за PC гнали план по внедрению АСУ (АСУчивали учет ватных штанов для работников крайнего севера и подобное), на Турбопаскале? Немерянное количество раз видел это и 80x и в 90x.... Я должен был падать ниц при виде этой широкомасштабной деятельности? Сейчас подобным много более профессионально и успешнее занимаются на 1C... Причем много меньшее количество людей.
Цитата
Нули, конечно cranky.gif

Щекотно?
_Pasha
Цитата(zltigo @ Dec 17 2008, 00:08) *
О чем Вы это?
.....................
Я должен был падать ниц при виде этой широкомасштабной деятельности?

Ну прям там, бездельники... Ладно, так мы точно помянем Блеза Паскаля, он перевернеццо в гробу и коллайдер заработает. Спокойной ночи!
SasaVitebsk
Цитата(zhevak @ Dec 16 2008, 12:51) *
Т.е. что я хочу сказать. Я хочу сказать, если предстоит построить быстро небольшой проектик (само собой -- некоммерческий!), можно взять то, что позволяет быстро сделать тяп-ляп и как-получится, не взирая ни на объемы ехе-шника, ни на скорость исполнения, ни на возможные падения ("Программа совершила недопустимую операцию и будет..."). Но если стоит задача получить на рынке денег за продукт, и не опарофиниться перед клиентом после поставки, то Делфийская Рэпид-технология отдыхает на Канарах.


Вот тут я с вами соглашусь полностью. Естественно, каждый язык для своих целей. Что здесь плохого?

Я вот, к примеру, не планирую и не буду в ближайшее время создавать коммерческие проекты под PC. Да и если честно, то не очень верю в создание крупного, хорошего комерческого проекта парой-тройкой программистов на просторах СНГ. Точнее сказать, это пока очень малораспространённое явление. Но часто создаются мелкие заплатки, типа для своего пользования, либо для демонстрации работы своего изделия. Вылизывать данные продукты - совершенно нет желания. Если такая цель будет поставлена, то скорее всего я обращусь к спецам в данной области, и предпочёл бы чтобы это было бы на Си.

И я не вижу, почему я должен краснеть, что я предпочитаю Дельфи. При том что у меня установлен и Билдер.

Знание Паскаля никак не мешает мне писать на Си для МК. Я не путаю ":=" или "==". Меня не смущает "!=" и т.д. и т.п.

Хотя я разделяю мнение что ":=" семантически более правильно (хотя и не удобно).
Давайте сравним. "a := a+c;" и "a = a+c;" Семантически правильно первое так как понимаешь "переменной а присваивается ...". Во втором случае, с математической точки зрения написан абсурд.
Человек понимает, что это последовательность действий, а не формула успеха. Начинающим, порой бывает сложно это объяснить. В этом проявляется академичность паскаля.

Теперь попробуем перенести. Я не говорю, что так будет и не призываю к тому, что напишу ниже. Я просто стараюсь быть объективным.
Я полностью разделяю подход zhevak. Это проявляется и в Си для МК. Порой кажется, что простенький проект на асме написать проще чем на Си. Мне приходится сначала продумать (вплоть до структуры проекта, например на какие файлы разбивать проект), потом продумать переменные и макроопределения, потом алгоритм. Написать хедеры и только потом приступить к написанию самого проекта.
Таким образом, если мне надо что-то протестировать, то времени тратится вагон. Зато при написании более крупных проектов или при создании проекта, аналогичного уже написанному, при модификации проекта .... просто песня. Нигде не получаешь такого удовольствия от правки, как на Си.
А Delfi проект действительно начинает обрастать заплатками, натянутыми вставками и через определённое время начинаешь терять с ним связь.

Ну и не надо его применять там где ненадо!!! В чём дело не понимаю?

Теперь давайте себе представим.
Есть маленькая задача для МК. Выбранный кристал сней справится левой ногой. По времени, по скорости, по объёму флэши.
Представим человек написал его на паскале. Красиво и лаконично.

Результирующий код отвратительный (чел его впрочем даже не смотрел). Но! Откомпилированная прога, залитая в камень выполняет свою ф-цию. Банально.

Если не брать переносимость и прочие дела, то что здесь плохого?? Поясните.


Я привёл данные, что-то никто из спорщиков мне не ответил. Размер исходника, на небольшом аналогичном проекте в Си проге в 1.5-1.6 раз больше!
zltigo
Цитата(SasaVitebsk @ Dec 17 2008, 01:17) *
Если не брать переносимость и прочие дела, то что здесь плохого?? Поясните.

Плохого,то, что не все в жизни можно делать "левой ногой", задачи не все "маленькие". И когда левой ногой начинают и без оглядки на реалии железа начинают делать серьезные вещи, то результат неважный получается.
SasaVitebsk
PS: Для zhevak.

Давече взял загрузил Megaload известную. Не помню на чём она написана по моему на Си под FrameWork. Или C#. Она падала у меня так, что невозможно было её даже оценить. Написал свой бут и несколько утилиток на Delfi. Кодировщик, заливальщик, серилизатор. Работает насмерть.
И вообще мои проги из под Дельфей работают очень устойчиво. Конечно, я не делал на них серверные приложения (хотя и так я знаю используют вполне успешно). Не работаю с сетью. Не создаю крупных коммерческих проектов, но, как известно есть крупные коммерческие продукты под Delfi и устойчивость весьма достойная. Да и быстродействие ... Например возьмём сам Delfi. Так это задумываешься как такую среду сделать можно было...
Может просто руки в @опе у тех, у кого что-то падает? Или знаний не хватает?
Я без намёков естественно.
zltigo
Цитата(SasaVitebsk @ Dec 17 2008, 01:17) *
Я привёл данные, что-то никто из спорщиков мне не ответил. Размер исходника, на небольшом аналогичном проекте в Си проге в 1.5-1.6 раз больше!

Это практически невероятно, радикальное различие может быть только за счет использования одной другой толстой универсальной сишной библиотечной функции, по сравнению с какой-нибудь абсолютно минималистичной узкоспециализированной библиотечке от "Паскаля". Листинг есть, Вы же можете посмотреть. По тому, что было вывалено для движка "ферзей" паскалевский результат не годен. Ну или, как вариант, на любом языке можно писать, как на Паскале smile.gif, только эффективность будет разная.


Цитата(SasaVitebsk @ Dec 17 2008, 01:32) *
Может просто руки в @опе у тех, у кого что-то падает? Или знаний не хватает?
Я без намёков естественно.

Можете считать, что у меня в жопе, но та поделка писаная на Дельфях (я уже писал), которая называлась здесь в качестве "Паскаля для AVR" упала у меня через 4-5 минут работы. Когда прошлый раз у меня что-то падало....э было.... но не припомню когда.
733259
Цитата
Зачем ?
Для полноты, ИМХО lsl Вы выбрали не удачно.
Цитата
Ну и что это, как не птичий язык ? Уже с одной переменной нихрена не разберешь, а их может быть и дюжина и вообще, сколько угодно.
Одна строчка хуже трёх? Легко и просто можно разобраться при не большой привычке.
Цитата
Особенно забавляет факт повторной передачи отдефайненного.
Чото не увидел повторной передачи, Test_byte упоминается один раз.
Цитата
Гланды - через жопу, короче.
А это - Ваше субъективное мнение.
Моё, тоже субъективное, - эти слова подходят к паскалю.

Цитата
Ога, си - это болезнь )))
Ничо, ради эффективности можно поболеть и не только си, даже ассемблером.
Serhiy_UA
Мог бы кто оформить здесь вопросник типа: "Чем Вы программируете AVR", с ответами:
1. С/С++
2. Pascal
3. Assembler

А также "Покупали ли Вы ПО для программирования AVR"
1. Покупал
2. Не покупал

Через пару недель все вопросы этого топика "Pascal для AVR" разрешились бы сами собой.
zltigo
Цитата(Огурцов @ Dec 17 2008, 05:55) *
Гланды - через жопу, короче.

Любой inline assembler через жопу. Реализация в GCC, при этом практически единственная, которую можно использовать в реальности. Тот-же бролондячие продукты, как С, так Паскаль встретив "красивую" и "понятную" пишущему ASM вставку ОТКЛЮЧАЮТ ОПТИМИЗАЦИЮ совсем, ибо тупо транслируют ее в код, соответственно совершенно не разбираясь с содежимым. Практически это в борланда страшнейшая заплатка к которой из-за ограниченности языка ПРИХОДИТСЯ прибегать чрезмерно часто. В общем случае ASM-у асмово - НЕ СМЕШИВАТЬ!
Цитата
Между прочим, подняли интересный факт - гораздо быстрее набирается begin/end, нежели скобки{}, которые набираются с шифтом (, как и прочие знаки.

Набираются они нормальными людьми одинаково быстро, поскольку нормальные люди
- пользуются темплейтами;
- печатают не одним пальцем;
- думают в процессе.
А вот читается вся эта хрень много медленнее, а со сбитым, или кривым форматированием совсем хреново.
Legotron
На мой взгляд begin end в Паскале читается также хреново как #ifdef #endif на Си (если смотреть код вообще без подсветок).

Ума не приложу как можно медленно набирать скобки... разве что вообще 1 пальцем через Caps Lock lol.gif
Огурцов
Цитата(Legotron @ Dec 17 2008, 07:21) *
Ума не приложу как можно медленно набирать скобки... разве что вообще 1 пальцем через Caps Lock lol.gif

Вот-вот, если одним пальцем, то разницы и нет что begin, что скобки. А вот если набираете десятью, то шифты со скобками - это как булыжник на скоростной трассе.
SasaVitebsk
Цитата(zltigo @ Dec 17 2008, 02:43) *
Можете считать, что у меня в жопе, но та поделка писаная на Дельфях (я уже писал), которая называлась здесь в качестве "Паскаля для AVR" упала у меня через 4-5 минут работы. Когда прошлый раз у меня что-то падало....э было.... но не припомню когда.

smile.gif
Да нет конечно. Этого я утверждать не собираюсь. В общем и целом я разделяю ваши взгляды, просто пытаюсь быть объективным. Не люблю всеогульного обхаивания. По моему, повально ругая язык, мы несколько оскорбляем людей им пользующихся.
smile.gif
Когда вы ответили мне на сравнение с обычным языком, то по принципу "родину не выбирают". "С молоком матери".
Возможно вы правы, но как-то не хочется верить, что если бы я выбирал, то выбрал бы другой. smile.gif
Это тоже как то унижает людей, которые говорят на конкретном языке.

В принципе, мы получили белорусский язык в достаточном объёме. Я, в своё время достаточно им владел. Например читал на нём книги (был момент дифицита разных книг и некоторые приличные "бестселлеры" смог достать только на белорусском). Не просто читал, а легко читал. Практически как на русском. Потом не замечаешь разницы. Тем не менее, русский язык мне нравится больше. Он приятнее.

Если вас не затруднит, пришлите проект, который у вас падает. Я бога ради не собираюсь вас поучать/ поправлять/ или что-то там аналогичное. Это чисто для себя. Мне просто любопытно. У меня действительно ничего не падает.
Огурцов
Цитата(zltigo @ Dec 17 2008, 06:46) *
Любой inline assembler через жопу.

Если GCC - любой, то таки да, любой.

Цитата(zltigo @ Dec 17 2008, 06:46) *
Тот-же бролондячие продукты, как С, так Паскаль встретив "красивую" и "понятную" пишущему ASM вставку ОТКЛЮЧАЮТ ОПТИМИЗАЦИЮ совсем, ибо тупо транслируют ее в код, соответственно совершенно не разбираясь с содежимым.

И абсолютно правильно делают. Поскольку уж если прогер взялся за ассемблер, то на то есть серьезные причины и оптимизатору не стоит пытаться умничать.
Rst7
Цитата
Может просто руки в @опе у тех, у кого что-то падает? Или знаний не хватает?Я без намёков естественно.


Это, видать, камень в мой огород (я тут страниц 10 назад жаловался)? Ну так можете мои посты почитать, у меня всегда сначала поиск граблей у себя, потом еще раз у себя, и еще раз у себя, а потом уже у других. Так что можете довериться мне в этом вопросе smile.gif
733259
Цитата
По моему, повально ругая язык, мы несколько оскорбляем людей им пользующихся.
ИМХО верно при отсутствии объективных критериев.
Но Вы же видели листинг.
Огурцов
Цитата(733259 @ Dec 17 2008, 03:40) *
Одна строчка хуже трёх?

Не скромничайте. У вас, как минимум три строки - оператор, входные аргументы и выходные аргументы. Когда аргументов будет больше одного, к вам придет песец, поскольку именуются они по номеру места, на котором находятся, т.е. при добавлении/удалении новых аругментов будете полностью переписывать весь ассемблерный код. Ну вы наверно должны быть в курсе, если хоть что-то реально писали на вставках в gcc, что я вам рассказываю.
733259
Цитата
И абсолютно правильно делают. Поскольку уж если прогер взялся за ассемблер, то на то есть серьезные причины и оптимизатору не стоит пытаться умничать.
Ога, и вручную писать lds, sts?
Неа, мы как нибудь по старинке, с оптимизацией. biggrin.gif biggrin.gif biggrin.gif

Цитата
Когда аргументов будет больше одного, к вам придет песец, поскольку именуются они по номеру места,
А я знаю, ха-ха.
Цитата
т.е. при добавлении/удалении новых аругментов будете полностью переписывать весь ассемблерный код
При добавлении и логика меняется, не находите? Но обычно надо только перенумероватьать. smile.gif Это не трудно.
Цитата
если хоть что-то реально писали на вставках в gcc,
Писал и пишу, как-то без особых затруднений. smile.gif
Demeny
Добавьте в начало программы всего две строчки
Код
#define begin {
#define end }

и Ваш любимый С-компилятор начнёт собирать и паскалевские исходники.
yeah.gif
_Pasha
Цитата(Demeny @ Dec 17 2008, 14:21) *
и Ваш любимый С-компилятор начнёт собирать и паскалевские исходники.
yeah.gif

Очень умнО ! crying.gif Если приходим к такому выводу на 10^6 посте темы, то это действительно диалог слепо-глухонемых.
ReAl
Цитата(Огурцов @ Dec 17 2008, 11:59) *
Когда аргументов будет больше одного, к вам придет песец, поскольку именуются они по номеру места, на котором находятся, т.е. при добавлении/удалении новых аругментов будете полностью переписывать весь ассемблерный код.
Кажется, в этой теме кто-то что-то говорил про то, что прежде чем ругать, надо сначала знать то, что ругаешь... Или это касается только ругания паскаля, С можно ругать "и так"?
И gcc на месте тоже не стоит. Когда-то он и PORTB = value; не умел, сейчас и со вставками работает "красивше"
Можно дать имена всем, в том числе и "локальным" регистрам асм-вставки
Код
    asm("lsl %[_b]": [_b] "+r" (Test_byte) );
и никаких номеров.
3.4.6 такое точно брал.


Цитата(Огурцов @ Dec 17 2008, 11:49) *
И абсолютно правильно делают. Поскольку уж если прогер взялся за ассемблер, то на то есть серьезные причины и оптимизатору не стоит пытаться умничать.
Он "от себя" и не "умничает". Ему задаются пределы, в которых он может заменять эквивалентные регистры не меняя общего хода кода - таким образом, чтобы не поломать оптимизацию того, что до и после вставки.
zhevak
Цитата(Огурцов @ Dec 17 2008, 14:40) *
Вот-вот, если одним пальцем, то разницы и нет что begin, что скобки. А вот если набираете десятью, то шифты со скобками - это как булыжник на скоростной трассе.

похоже на то, что Вы не подумали, что сказали, ибо
1. Скобки набираются за одно нажати Шифта { }, потом делается "шаг назад" клавишей курсора, и заполняется содержимое скобок без задних мыслей, что количество открывающихся скобок не будет равно количеству закрывающихся. Вы _сосредотачиваетесь_ на бизнес-процессе, а не на соблюдении правил языка.
2. А как Вы сам черз такие булыжники ездишь(-те), как $ @ ^ ( ). А как Вы преодалеваете ситуацию, когда нужно вставить комментарии на русском?

Ну ей Богу, детский лепет! И я на него реагирую.
ReAl
upd: avr-gcc 3.3.0 (WinAVR-20021209 - больше шести лет) тоже успешно скушал именованные аргументы асм-вставок.
Лень по логам рыться - начиная с какой версии GCC это работает.
Я это не использую (во вставках на десяток команд на три-четрые аргумента без этого можно обойтись), поэтому тяжело вспомнить - это было с avr-gcc 3.0 или уже было в 2.95, с которого я начинал.
Legotron
Цитата(Demeny @ Dec 17 2008, 13:21) *
Добавьте в начало программы всего две строчки
Код
#define begin {
#define end }

и Ваш любимый С-компилятор начнёт собирать и паскалевские исходники.
yeah.gif

Изврат..
Нифига он не начнет, ибо есть еще море различий..
А вот когда так делают в С-программах, которые предназначены для чтения не только для одного себя любимого это сильно бесит smile.gif
ИМХО Чем меньше дефайнов, которые не жизненно важны тем лучше!
zhevak
Цитата(_Pasha @ Dec 17 2008, 15:28) *
Цитата

и Ваш любимый С-компилятор начнёт собирать и паскалевские исходники.

Очень умнО ! crying.gif Если приходим к такому выводу на 10^6 посте темы, то это действительно диалог слепо-глухонемых.

Не-не, совсем не туда!
Скорее всего Demeny имел ввиду, что если уж так сильно программера колбасит набирать фигурные скобки, то он может сделать замену скобок на begin-end указанным способом. При этом надо себе отдавать отчет, что получится падонкаффский стиль, который на практике никто не будет использовать. Вас просто пошлют лесом с таким стилем, и правильно сделают -- кесарю-кесарево, Паскалю-Паскалево.
zltigo
Цитата(SasaVitebsk @ Dec 17 2008, 12:49) *
Если вас не затруднит, пришлите проект, который у вас падает. Я бога ради не собираюсь вас поучать/ поправлять/ или что-то там аналогичное. Это чисто для себя. Мне просто любопытно. У меня действительно ничего не падает.

Ставите эту приблуду и запихиваете в нее присланное Огурцовым. Единственное отступление я ее ставил не в Program Files.
SasaVitebsk
Цитата(Rst7 @ Dec 17 2008, 13:50) *
Это, видать, камень в мой огород (я тут страниц 10 назад жаловался)? Ну так можете мои посты почитать, у меня всегда сначала поиск граблей у себя, потом еще раз у себя, и еще раз у себя, а потом уже у других. Так что можете довериться мне в этом вопросе smile.gif

Да не в ваш. И не хочу я никого обидеть.
уже доверился вам. smile.gif

При крупном проекте придётся VC пользоваться наверное. Но там такой пакет нехилый.
Я уже устал что-то новое изучать непрерывно. Так влом. Хочется заниматься своим делом, а не изучением разных пакетов. smile.gif

Порой бывает хорошо, когда нет выбора. smile.gif
Огурцов
Ну вы, блин, даете. Пытаетесь убедить меня, что вот эта пурга:
Цитата(ReAl @ Dec 17 2008, 10:32) *
"lsl %[_b]": [_b] "+r" (Test_byte));[/code]

читается лучше, чем вот это ?:
ld r16, Test_byte

Хотя спасибо таки скажу, теперь можно? будет писать так:
lsl %[_Test_byte] : [_Test_byte] +r Test_byte lol.gif


Цитата(zhevak @ Dec 17 2008, 11:09) *
похоже на то, что Вы не подумали, что сказали, ибо
1. Скобки набираются за одно нажати Шифта { }

Похоже на то, что Вы не подумали, ибо begin end; набираются так же. И даже курсор не нужно назад "двигать".

Цитата(zhevak @ Dec 17 2008, 11:09) *
2. А как Вы сам черз такие булыжники ездишь

Притормаживаю на кочках точках.


Цитата(Legotron @ Dec 17 2008, 12:10) *
Нифига он не начнет, ибо есть еще море различий..

В общем-то чел не так далек от истины, как может показаться на первый взгляд.
zltigo
Цитата(Огурцов @ Dec 18 2008, 00:20) *
читается лучше, чем вот это ?:

Позволяет компилятору работать лучше с такими вставками, но похоже Вам это не дано понять sad.gif
ReAl
Цитата(Огурцов @ Dec 17 2008, 23:20) *
Ну вы, блин, даете. Пытаетесь убедить меня, что вот эта пурга:

читается лучше, чем вот это ?:
ld r16, Test_byte

Хотя спасибо таки скажу, теперь можно? будет писать так:
lsl %[_Test_byte] : [_Test_byte] +r Test_byte lol.gif
А оно и делает больше, чем ld r16, Test_byte
Более того, если Test_byte вдруг окажется автоматической переменной, то будет ldd r16, Y+что_надо/lsl r16/std Y+что_надо, r16 и т.п.
Тупую работу сделает компилятор.
Код
unsigned char lsl(unsigned char data)
{
    asm("lsl %[_b]": [_b] "+r"(data));
    return data;
}

unsigned char arr[256];

void moo(unsigned char index)
{
    asm("lsl %[_b]": [_b] "+r"(arr[index]));
}

struct sss {
    unsigned char a, b;
};

void foo(struct sss *ps)
{
    asm("lsl %[_b]": [_b] "+r"(ps->b));
}



Код
lsl:
/* #APP */
    lsl r24
/* #NOAPP */
    ldi r25,lo8(0)
    ret

moo:
    ldi r30,lo8(arr)
    ldi r31,hi8(arr)
    add r30,r24
    adc r31,__zero_reg__
    ld r24,Z
/* #APP */
    lsl r24
/* #NOAPP */
    st Z,r24
    ret

foo:
    movw r30,r24
    ldd r24,Z+1
/* #APP */
    lsl r24
/* #NOAPP */
    std Z+1,r24
    ret
zhevak
Цитата(SasaVitebsk @ Dec 18 2008, 01:43) *
Я уже устал что-то новое изучать непрерывно. Так влом. Хочется заниматься своим делом, а не изучением разных пакетов. smile.gif

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

Сейчас Мелкософт начала поднимать линейку продуктов WPF, LINQ и что-то там еще. Я просто одуреваю, от скорости их развития. По WPF еще пытаюсь удержаться на плаву, прикупил пару книжечек (одну от Петзольда, другую от Мак-Дональда) по вечерам почитываю. Иногда. А вот забить на SilverLight и LINQ пришлось. (Немного не в тему. Год назад я набрался наглости и типа поздравил Ч.Петзольда с Миэри-Кристмас. Написан ему благодарственную оду, типа ты молоток, ты много сделал для нас -- программеров, и не смотря на свой возраст еще что-то там пытаешься творить. Респект и уэлкэм тебе, ну и т.п. Гы-ы! Чувак оказался абсолютно без комплексов. К моему удивлению прислал ответ smile.gif Так, к чему это я? А к тому, что он тоже жалуется, что ни хрена не успевает за развитием технологий.


to Огурцов
Цитата
(zhevak @ Dec 17 2008, 11:09)
похоже на то, что Вы не подумали, что сказали, ибо
1. Скобки набираются за одно нажати Шифта { }

Похоже на то, что Вы не подумали, ибо begin end; набираются так же. И даже курсор не нужно назад "двигать".

Дак как так-же? Как это не надо двигать курсор назад?

Я ведь так понимаю, что набрав слово end, чтобы попасть обратно в пространство между begin и end, Вам нужно нажать на "стрелку курсора влево" три раза (мне -- один раз, т.к. скобка -- это один символ). Или я что-то не так понимаю?

Вот как это делаю я:
Я нажимаю пимпочки на клаве в такой последовательности
- за один заход набираю синтенцию типа int myfunc(int param), или while (flag), или еще что;
- нажиаю Enter;
- утапливаю Шифт;
- за один заход набираю обе скобки -- { } ;
- отпускаю Шифт;
- клавишу курсора влево;
- дважды Интер;
- курсор вверх;
- сейчас нахожусь в пространстве между скобок и набираю тело;

Автоматическо выранивание расставляет отступы. Все получается карсиво и очень быстро. Описание занимает больше времени, чем эти действия. И никаких пассов мышой, ибо попеременная работа то мышью, то клавой снижает производительность.
zltigo
Цитата(zhevak @ Dec 18 2008, 00:57) *
Я нажимаю пимпочки на клаве в такой последовательности
- за один заход набираю синтенцию типа int myfunc(int param), или while (flag), или еще что;
- нажиаю Enter;
- утапливаю Шифт;
- за один заход набираю обе скобки -- { } ;
- отпускаю Шифт;
- клавишу курсора влево;
- дважды Интер;
- курсор вверх;
- сейчас нахожусь в пространстве между скобок и набираю тело;

Усложняете smile.gif
1. Shift и {
2. Alt + Space
Простой template и все. Если что-то типа while,то еще проще
Огурцов
Цитата(zhevak @ Dec 17 2008, 21:57) *
Дак как так-же? Как это не надо двигать курсор назад?

Ну вот жеж видите, паскаль лучше )))

Ок, мальчиши-плохиши. C P-2-C вроде бы разобрались, есть такие проги и что-то там конвертят. Но вот задачка на сообразительность С-2-C (это вам не паскаль в си конвертить))) ) Вот исходник (да простит меня автор) на СИ (IAR) http://electronix.ru/forum/index.php?act=A...st&id=27251 Сколько вам нужно времени, чтобы собрать его (тоже!) под СИ (GCC) ? Да, можете еще раз спеть нам песенку про "стандарты" в СИ biggrin.gif


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


Цитата(ReAl @ Dec 17 2008, 21:52) *
Тупую работу сделает компилятор.

А ломать закорючками голову - это, конечно, нетупая работа.
zltigo
Цитата(Огурцов @ Dec 18 2008, 01:16) *
Да, программка, надо сказать малюсенькая, все же не сотня мегабайт исходников, а всего лишь сотня килобайт.

До двух часов.


Цитата(Огурцов @ Dec 18 2008, 01:22) *
Ну вот жеж видите, паскаль лучше )))

Вы можете бездумно, безпричинно повторять эту мантру бесконечно, но выглядит это с каджым повторением все дебильнее sad.gif.
ReAl
Цитата(Огурцов @ Dec 18 2008, 00:22) *
А ломать закорючками голову - это, конечно, нетупая работа.
А надо что-то такое же простое в освоении, как материнская грудь?
Неплохо написано было однажды умным человеком - примером правильного интерфейса является карандаш. Да, никаких "easy to use", учатся полноценному его применению до школы и в школе несколько лет. Зато можно потом сделать очень много.

Конечно, ладошкой какашки по пелёночке проще гораздо, да и учиться не надо... Но то, что можно сделать карандашиком на бумажке - ладошкой на пелёночке не сделать.



Цитата(zltigo @ Dec 18 2008, 00:26) *
До двух часов.
Пробежался по диагонали - на свежую голову где-то тако, собых излишеств нет. Пробежаться по __eeprom да __flash переменным и почти всё. Ну атрибут __attribute__((section(".init7"))) дать на __low_level_init(), __enable_interrupt() на sei() заменить, включить нужные #include да #pragma inline на просто inline заменить, ISR() вместо #pragma interrupt. Так на первый взгляд всё, но это работы на первый час максимум, а то и на минут сорок (ну с этим "пробежался по диагонали" вместе - на час).

Если бы она исходно была написана на avr-gcc на таком же уровне (т.е. без ассемблерных вставок по телу программы), то перевод на IAR был бы ещё проще, хватило бы включить заголовочник на один экран из строк типа
Код
typedef char __flash prog_char;
#define PROGMEM __flash
#define pgm_read_byte(a) *((__flash unsigned char*)(a))
#define pgm_write_byte(a,b) *((__flash unsigned char*)(a))=(b)


Кстати, там некоторые мысли возникли по дороге (время на них, по большому счёту, надо вычесть из указанного времени на "пробежался"), но это может с автором и свяжусь.
zhevak
Цитата(zltigo @ Dec 18 2008, 03:04) *
Усложняете smile.gif
1. Shift и {
2. Alt + Space
Простой template и все. Если что-то типа while,то еще проще

э-э... а мы про какую среду говорим?
Я интенсивно использую три с половиной среды, и в каждой свои правила. Поэтому я везде текст набираю руками и не заморачиваюсь на темплейты. (Куда уж далее отупляться, если не знать или испытывать трудности при наборе какого-нибудь do-while или switch-case-default!)

* В IAR-e темплейты настроены на Ctrl-Shift-Space.
* В VS 6.0 там на этой комбинации висит подсказка о параметрах функции. Щаблоны вообще не знаю где они там есть sad.gif
* В VS 2005 там своя кухня.
* В CodeVision темплейты можно только вставлять в текст только с помошью хомячка, что далеко не фонтан. Я уже об этом писал ранее.

Да это вообще непроблема -- шаблоны ручками набирать. Это только у начинающит клинит. Но мы-то -- "слава тебе, Хоспади-и!" -- да-авно уже не начинающие.
733259
Цитата
Огаога, си на столько хорош, ...что один компилятор совершенно не понимает другой.
Вы извините, но это же глупо звучит. Есть стандарт, ччас все компилеры более менее соответствуют, __flash заменить не особая проблема.

В ответ на Ваш гипотетический пример повторю другой, тупой, но реальный - я недавно бОльшую половину кода перетащил тупым копипастом с AVR на ARM (еще int8_t поменял на int32_t, но и так работало).

Покажите рабочий паскаль на AVR (тот, выше, не катит) или ARM.
Огурцов
Цитата(ReAl @ Dec 17 2008, 23:54) *
А надо что-то такое же простое в освоении, как материнская грудь?

Ага, или какой другой орган - простой, дружественный интерфейс, легок в использовании и в освоении. Недорогой, особенно если пользоваться триальными версиями.

Цитата(ReAl @ Dec 17 2008, 23:54) *
Зато можно потом сделать очень много.

Сегодня - лишь в ухе поковырять. Если только вы не художник.


Цитата(733259 @ Dec 18 2008, 03:25) *
Покажите рабочий паскаль на AVR

Тащится 500 метров. Если внутрях есть необходимая мне либа, то решение возможно.

Цитата(733259 @ Dec 18 2008, 03:25) *
(тот, выше, не катит) или ARM.

Так в чем проблем-то была ? То что он строку на ldi разложил ? А вы уверены, что ради одной строки из пяти символов нужно было подключать дополнительные либы ?
733259
Цитата
Так в чем проблем-то была ? То что он строку на ldi разложил ? А вы уверены, что ради одной строки из пяти символов нужно было подключать дополнительные либы ?
Насчёт строк и либ не понял, новерно пропустил. Проблема была в безобразном коде "ферзей" - в отсутствии оптимизации, проигрывает си в разы. Встроенный ассемблер примитивный. Не катит, в общем.
ReAl
Цитата(Огурцов @ Dec 18 2008, 05:19) *
Чуть меньше, но сути это не меняет. Перевожу с русского на русский (с) Ога.
Не так. Перевожу с русского со сленгом одной группы народу на русский со сленгом другой. Переводу подлежат нестандартные расширения языка.
Как Вы думаете - что скажет тот рекомендованный Вами паскаль для AVR на расширения Дельфи? Тоже придётся малость попереводить.

Цитата(Огурцов @ Dec 18 2008, 05:19) *
Огаога, си на столько хорош, ...что один компилятор совершенно не понимает другой.
Не понимает нестандартные расширения.
А у Паскаля с этим лучше? Да что там - в пределах одного Дельфи для одной Виндовс - как новая версия, так куча переделок. И это не последних версий касается, матюки слышал где-то на этапе 3->5, я уже несколько лет рядом с использующими дельфи не сидел.


p.s. не зря говорил про "свежую глову" ща с собакой гулял и вспомнил - ещё "naked" надо для __low_level_init добавить, если уж выделываться и в ".init7" её помещать.
Ладно, побёг я на работу.
zltigo
Цитата(zhevak @ Dec 18 2008, 03:17) *
э-э... а мы про какую среду говорим?
Я интенсивно использую три с половиной среды, и в каждой свои правила.

Так надо использовать всегда и везде одну среду-редактор или как минимум один редактор подключаемый к Вашми средам. Интенсивно использую 5 компиляторов под двумя операционками. Эпизодически еще 2-3.
Цитата
* В IAR-e темплейты настроены на Ctrl-Shift-Space.
* В VS 6.0 там на этой комбинации висит подсказка о параметрах функции. Щаблоны вообще не знаю где они там есть sad.gif
* В VS 2005 там своя кухня.

Во всех упомянутых есть настройка хоткеев. Первые два даже настраивал. IAR по минимуму, а MVS6 по полной программе из-за необходимости иногда подходить и править в четыре руки. Правда ничего более дебильного, нежели, чем сделано e MS не видел - результаты кропотливой работы храняться глубоко в реестре и штатных средств их экспорта/импорта и уж тем более быстрого переключения нет.
Цитата
Но мы-то -- "слава тебе, Хоспади-и!" -- да-авно уже не начинающие.

По это причите не я прогибаюсь под редактор, а редактор под меня smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.