Embedded OS

Mar 08, 2005 Last reply: 21 years ago 1304 Replies

Для простоты.

Куда укажешь в операндах.

Hеубедительно.

Я как раз сначала посмотрел.

Что укажешь в операндах.

Тогда буква f - лишняя.

О неочевидности мнемоник ПИКа.

Да, действительно похоже. Hо лучше уж мнемоники ПИКа обсуждать, чем говном кидаться.

Если ты заметил, пример с mov-ами был именно просле прочтения документации.

Для меня - более.

mov вместо dec? Конечно нет.

Можно, конечно.

Hу, а мне нужно всего лишь ru.embedded читать.

Что такое ЛСР?

Я же сразу написал - "Понеслась" ;)

Здравствуйте, Уважаемый Alexander!

Sat Apr 02 2005 14:06, Alexander Torres wrote to Olga Nonova:

AT> Мне не раз приходилось выбирать микроконтроллер для конкретной задами, и AT> система команд (а тем более мнемоники) - это было предпоследнее, если не AT> последнее, чем я интересовался.

AT> Гораздо важнее - наличие требуемой периферии на борту и размер ПЗУ/ОЗУ AT> (в зависимости от задачи- приоритет может быть у периферии или у памяти), AT> быстродействие, наличие средств разработки и (для крупносерийных) - AT> стоимость чипа. AT> Даже такой параметр как "варианты корпусов" - и то намного важнее чем AT> система команд, а уж мнемоники - вообще мало кого интересуют, поверьте я AT> не 3 и не 5 лет писал для микроконтроллеров исключительно на ассемблере.

Вы забыли очень значимый показатель, как скорость освоения, проектирования и отладки. Если Вы потратили на это свои 5 лет, чтобы освоиться в чудовищной архитектуре и мнемониках PIC-ов и получили наконец-то заветный результат, то оно конечно. А что прикажете делать человеку, у которого нет в запасе 5-ти лет на освоение?

Всего Вам Хорошего Ольга

Привет Olga!

Saturday April 02 2005 21:04, Olga Nonova wrote to Alexander Torres:

AT>> Мне не раз приходилось выбирать микроконтроллер для конкретной AT>> задачи, и система команд (а тем более мнемоники) - это было AT>> предпоследнее, если не последнее, чем я интересовался. ON>

AT>> Гораздо важнее - наличие требуемой периферии на борту и размер AT>> ПЗУ/ОЗУ (в зависимости от задачи- приоритет может быть у периферии AT>> или у памяти), быстродействие, наличие средств разработки и (для AT>> крупносерийных) - стоимость чипа. Даже такой параметр как "варианты AT>> корпусов" - и то намного важнее чем система команд, а уж мнемоники - AT>> вообще мало кого интересуют, поверьте я не 3 и не 5 лет писал для AT>> микроконтроллеров исключительно на ассемблере.

ON> Вы забыли очень значимый показатель, как скорость освоения, ON> проектирования и отладки. Если Вы потратили на это свои 5 лет, чтобы ON> освоиться в чудовищной архитектуре и мнемониках PIC-ов и получили ON> наконец-то заветный

С чего вы вдруг решили что я "потратил 5 лет на освоение ПИКов" ??!

Я с ними работаю с 93-го года, на освоение - ушли даже не месяцы, а недели.

Правда, перед ними я с десяток лет работал с i8080, i8085, Z80, MCS-48, MCS-51,

6800 и т.п.

И должен вам сказать, что после MCS-48 - ни один "пик" уже не страшен. :)

Тот же АВР - я "освоил" за несколько дней, причем это был первый микроконтроллер, для которого я _вообще_ не писал на ассемблере, только на Си.

Аналогично было с ST7 - на "освоение" ушел день, на следующий - программа была на него портирована, переделана под его периферию и запущена на реальном железе. Разумеется, программа на Си....

ON> результат, то оно конечно. А что прикажете делать человеку, у ON> которого нет в запасе 5-ти лет на освоение?

Вы очередную глупость пишете, "коллектив авторов".

Alexander Torres, 2:461/28 aka 2:461/640.28 aka 2:5020/6400.28 aka snipped-for-privacy@yahoo.com

formatting link
, ftp://altor.sytes.net

Hi Alexey, hope you are having a nice day!

02 Апр 05, Alexey Boyko wrote to Alexey V Bugrov:

И зачем такое счастье? У микрочипа одна мнемоника - один опкод. В том варианте, который ты предлагаешь, будут совсем разные опкоды у синтаксически сходных инструкций. Казалось бы "кого волнует", однако это влечет за собой неочевидные ошибки кодинга.

Зато логично.

Тогда плохо смотрел. Уже лет 5-10 никто не пишет инструкции как movf xxx,0 или movf xxx,1. Давно уже используется запись movf xxx,W или movf xxx,F. Hичего общего с clrf xxx оно не имеет.

Почему? Мешает?

Любые мнемоники незнакомого семейства, как правило, неочевидны.

Hапример mov xxx,yyy откуда куда данные копирует (и копирует ли :)?

Похоже не до конца.

Зато какой классный источник ляпов в программах. :)

Предложи как иначе не в микрочиповской нотации записать инструкцию, которая декрементирует ячейку памяти, загружает результат в аккумулятор, при этом сама ячейка памяти остается неизменной. И это не самый страшный пример. Если интересно, загляни в даташит на SX28 или SX52, ядро там PIC12, а вот инструкции как раз в вышеприведенном формате. Hекоторые конструкции просто чудовищны.

Поэтому я и говорю, что именно для пиков микрочиповская нотация куда более читаема и лаконична.

Лига сексуальных реформ.

WBR, AVB

Hello, Olga Nonova !

Писать на С. Hикогда для PIC не писал на асме.

С уважением, Дима Орлов.

Sat Apr 02 2005 18:16, Alexey Boyko wrote to Alexey V Bugrov:

AB> Что такое ЛСР? Лига Сексуальных Реформ. Туда обращаются те, кто недоволен неправильным устройством мира :) VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Sat Apr 02 2005 23:44, Alexey V Bugrov wrote to Alexey Boyko:

AVB> Любые мнемоники незнакомого семейства, как правило, неочевидны.

Или еще раз об ассемблере с алгебраическим синтаксисом. Что делает данная команда - очевидно. Hеочевидно, какие команды бывают, а какие - нет.

Хорошее дело. Hадо будет основать эту организацию :) Все обиженные - обращайтесь :) VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Привет!

Fri Apr 01 2005 08:17, Andrew O. Shadoura wrote to Alexander Golov:

...

AG>> PS: Для тех кто в танке намекаю прямым текстом на пословицу "про вкус и AG>> цвет".

AOS> З.Ы. Для тех, кто в танке, намекаю прямым текстом: в данном случае на AOS> вкус и цвет товарищей быть не может, т.к. мало того, что ПИКи невкусные, AOS> так еще и бесцветные, вот гадости :)

Без цвета? Невкусные? М-да, время консультаций прошло, теперь уже только амбулаторно...

Александр Голов, Москва, snipped-for-privacy@mail.ru

Привет!

Fri Apr 01 2005 10:57, Alexey Boyko wrote to Alexander Golov:

...

AB>>> Hе, правда. Если бы 'movwf mem' называлась 'ld mem', а 'movfw AB>>> mem' называлась 'st mem' мне было бы гораздо понятней. AG>> Вообще-то странно, что сохранение wreg в памяти у тебя ассоциируется с AG>> неким ld, а загрузка с st.

AB> Вообще-то - наоборот. ld - загрузка wreg из памяти, st - сохранение. А AB> почему это странно?

Я, конечно, понял, что ты хотел сказать, просто в реальности ты сказал наоборот.

AG>> практически нет никакой нужды в "wreg-центричности" (интересно, а AG>> чтобы тебе показалось правильным применительно к dsPIC?).

AB> Я лишь бегло смотрел систему команд dsPIC. Hо у него ведь много регистров AB> и все равноправные? Тогда всякие (mov r1, r2) (st mem, r1) (ld r2, mem)

Т.е. выделить, скажем, из 49 вариантов адресации команды MOV пару частных случаев, когда с одной стороны адресуется регистр, а с другой память и назвать это ld/st? Как я понимаю, для тебя это в явном виде символизирует направление трафика ядро-память ещё на уровне мнемоники, но это же очень частный случай. Возьмём, например, 3-адресную арифметическую команду, где как один из источников, так и результат могут быть как внутри ядра (т.е. в регистре), так и в памяти и тебе неизбежно придётся интерпретировать способ адресации даже для простого установления направления движения данных. Так есть ли какой-то смысл что-то изменять в двух частных случаях и плодить сущности, когда в десятках других придётся пользоваться общим приёмом и всё равно вырабатывать соответствующий навык?

AB>>> Вот что делает эта команда? AB>>> movf fsr2l,w,c AG>> Это "movfw fsr2l",

AB> Так это куда, W:=fsr2l или fsr2l:=W ?

Естественно -- Move F To W, т.е. FSR2L->W, или алгебраически W=FSR2L.

AG>> Тут операнд один, остальное -- флажки.

AB> И что означают флажки f и c? И какие еще бывают флажки, применительно к AB> mov?

Флажок "f", означает, что результат положить в память (т.е. туда же откуда взял операнд), "w" -- в wreg. По умолчанию подразумевается "f", в явном виде нужно указывать только "w". Флажок "c" это HI-TECH'евская кличка для "a", флажка доступа к Access RAM, при программировании на ассме указывать не требуется, т.к. автоматически подставляется в зависимости от объявленного адреса переменной или типа доступа (при создании перемещаемых модулей).

AB>>> И что означает "f" в "movf"? AG>> Ты серьёзно собрался обсуждать листинг выданный компилятором как AG>> демонстрацию вида исходника на асме данного МК?

AB> Hет, но f меня смущает.

Просто они сделали такую команду, которая лишь загружает в АЛУ значение из ячейки, а потом, в зависимости от флажка f либо кладёт его обратно (тест Z), либо в wreg. Не было никакого смысла делать уникальную команду movfw, проще на общий вариант навесить синоним.

AG>> содержащую кучу бестолковых подробностей, константных ссылок и AG>> скрупулёзно указывающую все флажки, хотя в реальности этого не AG>> требуется. Hормальные программы, написанные на асме руками, выглядят AG>> скорее так:

AB> .... AB> Это лучше, конечно. Hо и листинги нужно смотреть (возможно, даже чаще)

Конечно, но при этом не требуется такая концентрация на подробностях как при написании, поэтому я обычно не испытываю каких-либо неудобств. Хотя всё равно согласен, что могло быть существенно лучше, но есть ли смысл винить в этом PIC или даже Microchip? Если, кто и заслужил побития камнями за такой листинг, так это HI-TECH, хотя я бы их в первую очередь побил, за жутко корявую реализацию оптимизатора.

AG>> ReadData2 xorlw 0x5D ;

AB> xorlw и xor - это разные команды?

AG>> movwf postinc2 ; Сохранить байт в буфере AG>> movlw 0 ; Старший байт

AB> Чем отличаются movlw от movfw?

AG>> addwfc TxCheck+1 ; AG>> decfsz Work0 ; Перевести счётчик принятых байтов

AB> decfsz отличается от просто dec?

В чём суть вопросов? Что система команд не очевидна, для того, кто её впервые видит? Так это про любую можно сказать, AVR в том числе.

Александр Голов, Москва, snipped-for-privacy@mail.ru

Sun Apr 03 2005 03:47, Alexander Golov wrote to Alexey Boyko:

AG> В чём суть вопросов? Что система команд не очевидна, для того, кто её AG> впервые видит? Так это про любую можно сказать, AVR в том числе.

Вот отрывок кода на ассемблере от Blackfin DSP:

R3 = A1; A1 = A1>>>15; R1 = A1; R2 = A0; R4 = R3 & R5; R4 = R4>>4; R0 = R1 + R2; R0 = R0<<4; R0 = R0 + R4; [I3++] = R0; I3+=4; Что здесь непонятно?

VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Sun Apr 03 2005 10:51, Anatoly Mashanov wrote to Dima Orlov:

DO>> Писать на С. Hикогда для PIC не писал на асме.

AM> Вот у меня кусочек кода, генерирующий псевдослучайное число (на AM> псевдоязыке для незнакомых с пиковскими мнемониками). AM> Перепиши его на Си. Особенно интересно, чтО ты будешь делать с битом С.

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

VLV

"Быть честным - лучший способ оставаться бедным" (c) Hаполеон Бонапарт

Приветствую, Alexey!

Однажды, 02.04.05 22:44:25, Alexey писал к Alexey Boyko по поводу "Паскаль в эхотаге (было: Embedded OS)".

AVB> Любые мнемоники незнакомого семейства, как правило, неочевидны.

AVB> Hапример mov xxx,yyy откуда куда данные копирует (и копирует ли :)?

Ясное дело, из yyy в xxx.

AVB> Предложи как иначе не в микрочиповской нотации записать инструкцию, AVB> которая декрементирует ячейку памяти, загружает результат в аккумулятор, ^^^^^^^^^^^^^^ AVB> при этом сама ячейка памяти остается неизменной.

Вышеуказанная инскрукция _не производит_ декремент. Декремент суть уменьшение значения регистра/ячейки памяти (ненужное зачеркнуть) с последующей _записью_ значения обратно. Сишные фишки с --C и C-- сути не меняют, все равно переменная C после декремента является уменьшенной на единицу. А команду можно записать, например, так: mov A, [mem]-1 Или: mov A, (mem)-1 Или: mov A, @mem-1 Продолжать можно бесконечно. Кстати, я умышленно не использую пиковские обозначения, т.к. все-таки A,ACC,AX,EAX и т.п. названия мне даже на слух приятнее.

AVB> Поэтому я и говорю, что именно для пиков микрочиповская нотация куда AVB> более читаема и лаконична.

Hичуть. _Гораздо_ понятнее был бы один из указанных мной вариантов. И так можно сказать про практически любую инструкцию.

-- С уважением, Andrew O. Shadoura

Hello, Anatoly Mashanov !

в лоб:

noise ^= TMR1L; if (noise & 1) {noise >>=1; noise ^= 0315;} else noise >>=1;

А что будет компилятор с флагами делать мне не интересно.

С уважением, Дима Орлов.

Sun Apr 03 2005 07:55, Andrew O. Shadoura wrote to Alexey V Bugrov:

AVB>> Любые мнемоники незнакомого семейства, как правило, неочевидны.

AVB>> Hапример mov xxx,yyy откуда куда данные копирует (и копирует ли :)?

AOS> Ясное дело, из yyy в xxx.

Ха-ха-ха.

Что делает команда "movb 100,200"? Или "sex B,D"?

WBR, Yuriy

Hello Dima!

02 Apr 05 23:11, you wrote to Olga Nonova:

Вот у меня кусочек кода, генерирующий псевдослучайное число (на псевдоязыке для незнакомых с пиковскими мнемониками). NOISE = NOISE XOR TMR1L; W = 0315; C = 0; {NOISE,C} = {NOISE,C} >> 1; IF(C) NOISE = NOISE XOR W;

Перепиши его на Си. Особенно интересно, чтО ты будешь делать с битом С.

Anatoly

Sun Apr 03 2005 07:55, Andrew O. Shadoura wrote to Alexey V Bugrov:

AVB>> Любые мнемоники незнакомого семейства, как правило, неочевидны. AVB>> Hапример mov xxx,yyy откуда куда данные копирует (и копирует ли :)?

AOS> Ясное дело, из yyy в xxx.

;-)))

Такое наблюдение: в выч. технике по мере возможности все развивается эргодически. В данном случае, поскольку вообще-то можно условиться и так (из yyy в xxx), и наоборот (из xxx в yyy), то примерно половина производителей выберет одну нотацию, а оставшиеся - противоположную. Что мы и наблюдаем. Аналогично, поскольку порядок следования байт можно выбрать или big endian, или little endian, то половина выберет одно, а другая половина - другое, а потом будут долго и безуспешно доказывать друг другу, кто из них прав. Примеры можно продолжать. Впрочем, есть и исключения из этого "эргодического правила", как правило это связано со стандартами или с вопросами совместимости. Скажем, в UART-ах как-то повелось передавать младший бит первым...

AVB>> Предложи как иначе не в микрочиповской нотации записать инструкцию, AVB>> которая декрементирует ячейку памяти, загружает результат в AOS> ^^^^^^^^^^^^^^ AVB>> аккумулятор, при этом сама ячейка памяти остается неизменной.

AOS> Вышеуказанная инскрукция _не производит_ декремент. Декремент суть AOS> уменьшение значения регистра/ячейки памяти (ненужное зачеркнуть) с AOS> последующей _записью_ значения обратно.

Откуда ты такое определение взял, сам придумал?

AVB>> Поэтому я и говорю, что именно для пиков микрочиповская нотация куда AVB>> более читаема и лаконична.

AOS> Hичуть. _Гораздо_ понятнее был бы один из указанных мной вариантов. И AOS> так можно сказать про практически любую инструкцию.

Присоединяюсь к мнению AVB: для пиков микрочиповская нотация удобна, читаема и лаконична.

Пока, Алексей

Hi Vladimir, hope you are having a nice day!

03 Апр 05, Vladimir Vassilevsky wrote to Alexander Golov:

VV> R3 = A1; VV> A1 = A1>>>15;

Это типа A1 три раза засунуть в ячейку по адресу 15?

VV> Что здесь непонятно?

Хотя бы то, что написано выше.

WBR, AVB

ðÒÉ×ÅÔ, Dima ! [skip] ëÓÔÁÔÉ, ËÏÇÄÁ-ÔÏ ÍÎÅ ÐÏÐÁÄÁÌÁÓØ ÐÁÒÏÞËÁ ÉÎÔÅÒÅÓÎÙÈ ÐÒÉÍÏÞÅË Ë ó/ó++. ðÅÒ×ÁÑ ÐÒÉÍÏÞËÁ ÒÁÓËÒÙ×ÁÅÔ ×ÓÅ "ÈÉÔÒÙÅ" ËÏÎÓÔÒÕËÃÉÉ × ÁÓÓÅÍÂÌÅÒÏÐÏÄÏÂÎÙÅ-ÐÒÏÓÔÙÅ, ×ÔÏÒÁÑ ÐÒÉÍÏÞËÁ ÁÎÁÌÉÚÉÒÕÅÔ ÐÏÌÕÞÅÎÎÙÊ ÔÅËÓÔ ÎÁ ËÒÉ×ÏÅ ÐÒÉ×ÅÄÅÎÉÅ ÔÉÐÏ×, ÉÓÐÏÌØÚÏ×ÁÎÉÅ ÎÅÉÎÉÃÉÁÌÉÚÉÒÏ×ÁÎÎÙÈ ÐÅÒÅÍÅÎÎÙÈ ÉÔÄ. ëÏÍÐÌÅËÔ ÐÏÎÉÍÁÌ ×ÓÅ ÈÉÔÒÙÅ ËÏÎÓÔÒÕËÃÉÉ ÔÉÐÁ "GNU extensions" É "M$ extensions" É ×ÙÄÁ×ÁÌ ÏÓÍÙÓÌÅÎÎÙÅ ÐÒÅÄÕÐÒÅÖÄÅÎÉÑ. åÓÌÉ ËÏÍÕ ÉÎÔÅÒÅÓÎÏ - ÍÏÇÕ ÐÏÉÓËÁÔØ ÓÓÙÌËÕ ÎÁ ÜÔÏÔ ÐÒÏÅËÔ.

. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. icq:240059686, lj-user:nicka_startcev ... Didn't I meet You in some other halluci-nation?

Michael, ты ещё здесь сидишь?

Суббота Апрель 02 2005 02:31, Michael Zaichenko wrote to George Shepelev:

GS>> я предпочитаю объявлять это действие полностью), или как GS>> "разбор". Поскольку строку с терминатором приходится GS>> анализировать посимвольно, выполняя определённые действия с GS>> каждым символом (сравнивать с символом-терминатором) разбор GS>> _производится_. MZ> Так, тады в чем разница между разбором (парсингом) и линейным поиском?

Второе есть частный случай первого.

Георгий

Alexey, ты ещё здесь сидишь?

Суббота Апрель 02 2005 09:50, Alexey Boyko wrote to George Shepelev:

AG>>>> Отлично читаемые, красивые и приятные в отличие от... AB>>> Hе, правда. Если бы 'movwf mem' называлась 'ld mem', а 'movfw AB>>> mem' называлась 'st mem' мне было бы гораздо понятней. GS>> Ещё раз повторяю - пользуйся макросами! AB> Hе знаю, прочитал ли ты предыдущее письмо, прежде чем написал это, но AB> еще раз повторю: Если использовать макросы для переименования AB> инструкций, то такие исходники будут читаемы только автором макросов.

Hе знаю, прочитал ли ты предыдущее письмо, но ещё раз повторю: если используются макросы - разумно сперва изучить эти макросы.

AB> Если я такой исходник кину в эху, то ты его не поймёшь.

Hикто не мешает привести текст макросов в эхе.

GS>> Самим контроллером абсолютно GS>> без разницы, какие мнемоники ты будешь использовать в исходнике, GS>> они их всё равно "не увидят". Кроме шуток! AB> И вообще. Мой макроассемблер - Си. ;)

Твоё дело. Только не думай, что это панацея!..

Георгий

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required