Embedded OS

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'ах свет клином сошёлся?

Георгий

Reply to
George Shepelev
Loading thread data ...

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> время от этих кристаллов навсегда.

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

Георгий

Reply to
George Shepelev

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 хватает недели. Это если не торопясь ;)

Георгий

Reply to
George Shepelev

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

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

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

Георгий

Reply to
George Shepelev

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

Reply to
Sergey Davydov

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аполеон Бонапарт

Reply to
Vladimir Vassilevsky

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

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

Hello George.

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

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

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

Alexey

Reply to
Alexey Boyko

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

Reply to
Alexey Boyko

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

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

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

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

Reply to
Harry Zhurov

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) "на птичьем" изобразить? Для "паскальподобных" языков придумана остроумная запись :=:

Георгий

Reply to
George Shepelev

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

Reply to
Alexey Boyko

Привет, *Sergey*!

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

[кусь]

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

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

[кусь]
Reply to
Andrey Solomatov

Hello Olga.

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

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

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

Aleksey

Reply to
Aleksey Somow

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

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

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

VV> .........

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

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

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

Reply to
Olga Nonova

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

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

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

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

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

Reply to
Olga Nonova

Здравствуйте, Уважаемый 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

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

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

Reply to
Olga Nonova

Здравствуйте, Уважаемый 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-го. Правополушарных образов, то бишь.

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

Reply to
Olga Nonova

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.