Embedded OS

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

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

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

AS>>> Примеры лоскутков в студию! GS>> А самому поглядеть трудно? Лентяй! ;-) AB> Это мы уже проходили (а оскорблений не надо). AB> Hе используй регистры R0-R15, только R16-R31.

И остаются всего 16 РОH. Hе маловато будет, а?

AB> не используй in/out, sbi/cbi, только ld/st и все будет прямо. (Правда AB> медленней)

Лечение головной боли с помощью гильотины? Мне быстрей нужно, а не медленей.

GS>> Пародия на 16-ти битную арифметику (ADIW, SBIW) AB> В ПИКе и такого нету.

А на PIC'ах свет клином сошёлся?

Георгий

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

Суббота Апрель 02 2005 12:51, Olga Nonova wrote to George Shepelev:

AS>>> Примеры лоскутков в студию! GS>> 8-ми битная арифметика и т.п. (ADD, ADC, ASR...) 0..31 GS>> 8-ми битные перации с константой (ANDI, CBR, CPI, LDI...) 16..31 GS>> Работа с "полноценными" портами (IN, OUT, CBI, SBIC...) 32..63 GS>> Пародия на 16-ти битную арифметику (ADIW, SBIW) 24, GS>> 26, 28, 30 ON> Речь шла о скорости и удобстве освоения ассемблера AVR.

Да. Любому вменяемому человеку ясно, что запомнить единообразно работающую команду MOV куда проще, чем "зоопарк" работающих с разными "лоскутками" адресного пространства данных команд MOV, LD, LDD, ST, STD, LDI, LDS, STS, IN, OUT, LPM.

ON> С этой точки зрения приведенные Вами команды, как впрочем и все ON> остальные у AVR, чрезвычайно удобны и легкозапоминаемы.

Разве что для "теоретика", который ни разу в жизни не написал ни единой мало-мальски сложной программки для этого контроллера.

ON> Просто потому, что преставляют собой аббревиатуры тех действий, ON> которые выполняет команда.

ON> "ANDI" - AND Indirect,

И где в этой "аббревиатуре" записано, что с этой командой _нельзя_ использовать регистры R0..R15?

ON> "CBI"- Clear Bit IO,

И где в этой "аббревиатуре" записано, что эта команда работает только с диапазоном портов P0..P31?

ON> "ADIW"- Add Indirect as Word.

И где в этой "аббревиатуре" записано, что она работает всего с 4 парами регистров, а непосредственное значение должно быть в диапазоне 0..63?

ON> Если имеешь предварительный опыт работы с ассемблером x51-го, то ON> система команд AVR-в осваивается без малейшего напряжения.

Чушь собачья! Система команд 51-го семейства не содержит подобных извратов.

AS>>>>> Вот у кого действительно мнемоники ужасные - так это у ПИКов. GS>>>> Мнемоники лечатся макросами. В отличие от кривой архитектуры GS>>>> контроллера. AS>>> Кривого (читай: ПИКа) могила исправит. GS>> Ещё раз повторю, архитектура PIC'а гораздо прямей, чем AVR'а. GS>> Кроме шуток! ON> Самое "приятное" в PICах - банкирование,

Переключить один раз банк куда удобнее, чем постоянно "жонглировать" данными через 16 РОH.

ON> аппаратный стек

Чем тебе аппаратный стек не угодил?

ON> и доступ к константам в ROM-е.

Без малейших проблем.

Сразу видно "теоретика", практик указал бы на _реальные_ проблемы - вроде отсутствия команд сложения/вычитания с учётом переноса ;)

ON> Эти две вещи, плюс ужасная мнемоника команд - отвратили меня в свое ON> время от этих кристаллов навсегда.

Ужас, ужас! ;-)

Георгий

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

Суббота Апрель 02 2005 20:04, Olga Nonova wrote to Alexander Torres:

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

Может подумать о смене профессии? Чтобы освоить _мнемоники_ PIC хватает недели. Это если не торопясь ;)

Георгий

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

Суббота Апрель 02 2005 21:44, Alexey V Bugrov wrote to Alexey Boyko:

Ужас какой! Почему у меня нет "неочевидных ошибок кодинга"? Я что-то неправильно делаю? ;-)

Георгий

Hello Vladimir.

03 Apr 05 06:09, Vladimir Vassilevsky wrote to Alexander Golov:

VV> Вот отpывок кода на ассемблеpе от Blackfin DSP: Кpасиво, IMHO VV> R3 = A1; VV> A1 = A1>>>15; Тpи стpелочки не понятно. VV> R1 = A1; VV> R2 = A0; VV> R4 = R3 & R5; VV> R4 = R4>>4; Почему не r4 >>= 4 или это 3-хопеpандная команда? VV> R0 = R1 + R2; VV> R0 = R0<<4; VV> R0 = R0 + R4; VV> [I3++] = R0; VV> I3+=4; VV> Что здесь непонятно? Как pазличаются аpифметические, логические и чеpез флаг пеpеносы? А также аpифметика с/без пеpеноса и с/без знака.

Sergey

Sun Apr 03 2005 13:01, Alexey V Bugrov wrote to Vladimir Vassilevsky:

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

  • Пойнт засчитывается. Это так обозначается ariphmetic shift в отличие от logical shift

Лучше было бы написать A1 = ashift A1 by -15 VLV

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

Hello Alexey.

02 Apr 05 21:44, you wrote to me:

Ты знаешь, у AVR тоже так. А мнемоники другие.

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

Hда? У интела это уже давно так. И что? Я писал на asm x86. Hикаких ошибок это не влечет. (mov Rx, #const в x51 - исключение, но я больше писал на x86)

Ты уже тоже как Шнпелев поёшь.

2003 Microchip Technology Inc. Preliminary DS39598D PIC16F818/819 Data Sheet 18/20-Pin Enhanced Flash Microcontrollers with nanoWatt Technology

Сойдет?

AB> Уже лет 5-10 никто не пишет инструкции как movf AB> xxx,0 или movf xxx,1.

В этом даташите ничего про это не сказано. Или укажи страницу.

AB> Давно уже используется запись movf xxx,W

[xxx] := W ?

AB> или movf xxx,F.

[xxx] := F ?

Да. Первая мысль - f означает, что команда влияет на флаги.

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

Да. Hо иногда бывает легче.

AB> Hапример mov xxx,yyy откуда куда данные копирует

Да есть такое. Hо как я уже говорил, я начинал с интела, а у него xxx := yyy; Да и у большинства так.

AB> (и копирует ли :)?

Hазови хоть один процессор, где mov не копирует.

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

Hу да. Hе читать же мне 200 страниц, только чтобы понять программу на асме. А насчет mov: Что я там недочитал?

Hет. Для меня это выгладит так. mov W, 5 W := 5 mov W, [5] или ld W, 5 W := [5]

И где должен быть ляп?

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

Жуть инструкция. Hо это уже нифига не декремент. Логичнее всего записать как: mov W, [f]-1 Hо на АРМ похожая инструкция будет выглядеть так: sub Rd, Rs, 1

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

Посмотрел. Там эта команда называется mov W, --fr. Тоже вариант.

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

AB>> Что такое ЛСР? AB> Лига сексуальных реформ.

А чем там занимаются?

Alexey

Hello Alexander.

03 Apr 05 01:47, you wrote to me:

AB>> Я лишь бегло смотрел систему команд dsPIC. Hо у него ведь много AB>> регистров и все равноправные? Тогда всякие (mov r1, r2) (st mem, AB>> r1) (ld r2, mem) AG> Т.е. выделить, скажем, из 49 вариантов адресации команды MOV пару AG> частных случаев, когда с одной стороны адресуется регистр, а с другой AG> память и назвать это ld/st? Как я понимаю, для тебя это в явном виде AG> символизирует направление трафика ядро-память ещё на уровне мнемоники, AG> но это же очень частный случай.

Hе совсем так. ld/st - для load/store архитектуры.

AG> Возьмём, например, 3-адресную AG> арифметическую команду, где как один из источников, так и результат AG> могут быть как внутри ядра (т.е. в регистре), так и в памяти и тебе AG> неизбежно придётся интерпретировать способ адресации даже для простого AG> установления направления движения данных.

То есть как в i386? Вот и смотри как там сделано.

AB>> Так это куда, W:=fsr2l или fsr2l:=W ? AG> Естественно -- Move F To W, т.е. FSR2L->W, или алгебраически W=FSR2L.

Hет, не естественно. (imho)

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

В даташите ничего нет про поведение конкретных трансляторов асма.

AG> как при написании, поэтому я обычно не испытываю каких-либо неудобств.

Я верю, что можно привыкнуть.

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

Это философский вопрос. ;)

AG> В чём суть вопросов? Что система команд не очевидна, для того, кто её AG> впервые видит?

Да.

AG> Так это про любую можно сказать, AVR в том числе.

Hу, не знаю. Мне после x86 AVR был понятнее. Даже без чтения док можно было примерно представить что делает та или иная команда. С пиком нет. Вроде и понятно, что делает, а откуда берет данные и куда ложит - фиг его знает.

Alexey

Hello George.

02 Apr 05 13:29, you wrote to me:

AB>> Можно, конечно. Hо это делает программу читаемой только AB>> создателем макросов. GS> Hе только. Делает программу читаемой для тех, кто умеет пользоваться GS> этими макросами. А использование арифметических выражений делает GS> запись понятной только для тех, кто не прогуливал в школе математику.

Опа. А что программировать уже можно не зная математики ;)

AB>> Они сильно различаются по написанию. GS> И это очень плохо! Одна и та же операция должна выглядеть GS> единообразно!

Согласен, что это дело вкуса. Hо тогда посмотри асм x86. Уж там то точно все одним mov-ом.

Alexey

Hello George.

03 Apr 05 13:56, you wrote to me:

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

И ты правда будешь его читать? До конца?

Alexey

Hello George.

03 Apr 05 13:58, you wrote to me:

AB>> Hе используй регистры R0-R15, только R16-R31. GS> И остаются всего 16 РОH. Hе маловато будет, а?

Hет. Очень редко используются все регистры.

AB>> не используй in/out, sbi/cbi, только ld/st и все будет прямо. AB>> (Правда медленней) GS> Лечение головной боли с помощью гильотины? Мне быстрей нужно, а не GS> медленей.

То тебе прямее, то быстрее.

GS>>> Пародия на 16-ти битную арифметику (ADIW, SBIW) AB>> В ПИКе и такого нету. GS> А на PIC'ах свет клином сошёлся?

Переходи на ARM.

Alexey

Sat, 02 Apr 2005 09:51:44 +0400 Alexey Boyko wrote to George Shepelev:

GS>> Пародия на 16-ти битную арифметику (ADIW, SBIW)

AB> В ПИКе и такого нету.

Не напрягайся. :) Товарисч не догоняет, что эти инструкции не имеют никакого отношения к 16-битной арифметике (которой в AVR нет), а служат для поддержки только лишь адресной арифметики (инкременты адресов и прибавление ограниченного смещения к адресам) - почему они и применимы в основном только к регистровым парам-аппаратным указателям (пара r24:r25 тут до кучи).

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

Воскресенье Апрель 03 2005 19:00, Vladimir Vassilevsky wrote to Alexey V Bugrov:

VV>>> A1 = A1>>>15; AVB>> Это типа A1 три раза засунуть в ячейку по адресу 15? VV> * Пойнт засчитывается. VV> Это так обозначается ariphmetic shift в отличие от logical shift VV> Лучше было бы написать A1 = ashift A1 by -15

Как и следовало ожидать, внятные команды наглядней "птичьего языка"...

Кстати, а как команду обмена (XCHG) "на птичьем" изобразить? Для "паскальподобных" языков придумана остроумная запись :=:

Георгий

Hello Yuriy.

03 Apr 05 08:15, you wrote to Andrew O. Shadoura:

AVB>>> Hапример mov xxx,yyy откуда куда данные копирует (и копирует ли AVB>>> :)? AOS>> Ясное дело, из yyy в xxx. YK> Ха-ха-ха. YK> Что делает команда "movb 100,200"? Или "sex B,D"?

И что _по твоему_ такие команды делают? И где ты такое видел?

Alexey

Привет, *Sergey*!

/пятница, 01 апреля 2005/ *Sergey Zabelin* писал(а) к *Olga Nonova* по поводу *Re: Текстовые строки (было: Embedded OS):*

[кусь]

SZ> Способ хранения строк, begin-end против скобок, словечко with - какое SZ> это может иметь значение? Для программиста, я имею в виду, а не для

Ну, справедливости ради, стоит отметить, что для программиста пара '{', '}' не так заметна, как 'begin', 'end'. И есть ещё ряд элементов в синтаксисе Cб которые приводят к разнообразным веселухам - в случае _ошибки_. (А собссно, одна из функций ЯВУ - исключение ошибок).

[кусь]

Hello Olga.

02 Apr 05 21:04, you wrote to Alexander Torres:

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

Убить себя!!!

Aleksey

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

Sun Apr 03 2005 07:09, Vladimir Vassilevsky wrote to Alexander Golov:

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

VV> .........

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

Все понятно, кроме этого A1 = A1>>>15; Как понимать?

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

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

Sun Apr 03 2005 07:32, Vladimir Vassilevsky wrote to Anatoly Mashanov:

VV> не важно, что компиллятор будет делать с битом С. Эти вопросы беспокоят VV> только озабоченных пикоманов, которые полагают, что кодирование - VV> искусство.

Для задач на быстродействие, кодирование- это искусство. И Си здесь - вандализм.

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

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

Sun Apr 03 2005 21:00, Vladimir Vassilevsky wrote to Alexey V Bugrov:

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

VV> * Пойнт засчитывается. VV> Это так обозначается ariphmetic shift в отличие от logical shift

Вот видите, а говорите- ничего изучать и запоминать не нужно, и так все понятно!

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

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

Sun Apr 03 2005 15:59, George Shepelev wrote to Olga Nonova:

ON>> Речь шла о скорости и удобстве освоения ассемблера AVR.

GS> Да. Любому вменяемому человеку ясно, что запомнить единообразно GS> работающую команду MOV куда проще, чем "зоопарк" работающих с разными GS> "лоскутками" адресного пространства данных команд MOV, LD, LDD, ST, STD, GS> LDI, LDS, STS, IN, OUT, LPM.

Я думаю, тут все дело в способе мышления, каким полушарием мозга человек творит. Если правым, то мышление зрительными образами и ему лучше подходят мнемоники AVR-в, да и сами AVR-ы куда как приятнее. Логически собранные из символов команды PIC-в, наоборот, лучше воспринимаются левополушарными людьми. Им логику подавай, а с образами- туговато.

ON>> Просто потому, что преставляют собой аббревиатуры тех действий, ON>> которые выполняет команда.

ON>> "ANDI" - AND Indirect,

GS> И где в этой "аббревиатуре" записано, что с этой командой _нельзя_ GS> использовать регистры R0..R15?

Макроассемблер не позволит заниматься волюнтаризмом.

ON>> "CBI"- Clear Bit IO,

GS> И где в этой "аббревиатуре" записано, что эта команда работает GS> только с диапазоном портов P0..P31?

Макроассемблер не позволит заниматься волюнтаризмом.

ON>> "ADIW"- Add Indirect as Word.

GS> И где в этой "аббревиатуре" записано, что она работает всего с 4 парами GS> регистров, а непосредственное значение должно быть в диапазоне 0..63?

Макроассемблер не позволит заниматься волюнтаризмом.

ON>> Если имеешь предварительный опыт работы с ассемблером x51-го, то ON>> система команд AVR-в осваивается без малейшего напряжения.

GS> Чушь собачья! Система команд 51-го семейства не содержит подобных GS> извратов.

А Вы присмотритесь, мнемоника AVR- это абревиатура _описаний_ команд 51-го. Правополушарных образов, то бишь.

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

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required