Embedded OS

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

Hello, George! You wrote to Alexey V Bugrov on Sun, 03 Apr 2005 14:05:09 +0400:

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

GS> Ужас какой! Почему у меня нет "неочевидных ошибок кодинга"?

Значит ничего не пишешь.

GS> Я что-то неправильно делаю? ;-)

Как можно неправильно ничего не делать?

p.s. Ты че влез-то, хоть в курсе о чем речь была?

WBR, AVB

Hello, Olga Nonova !

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

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

Hello, Alex Gavrikov !

Давай если ты что-то утверждаешь, то я буду у тебя и спрашивать. А ты уж спросишь у Сименса или у шмименса, мне без разницы. Так вот если ты утверждаешь, что некий язык паскалеподобный, изволь это утверждение чем-то аргументировать. Итак, что именно в этом языке подобно Паскалю, а что не подобно?

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

Hello Alexey.

04 Apr 05 15:05, you wrote to me:

AB>> 2003 Microchip Technology Inc. Preliminary DS39598D AB>> PIC16F818/819 Data Sheet 18/20-Pin Enhanced Flash AB>> Microcontrollers with nanoWatt Technology Сойдет?

AB> Вполне. Еще теперь посмотри на любой загловочный файл от любого пика и AB> на _любой_ пример кода в даташите, и все встанет на свои места.

Поискал пример. Да, действительно. В примерах единичек в конце нет. А крыша не должна поехать оттого, что в Instruction Set Summary написано в одном стиле, а примеры в другом? Или нужно еще Instruction Set Complete читать для полного прояснения?

Заткнулся на инструкции 'MOVWF TMR1H, F' Из комментария предполагаю, что это TMR1H := W, Так?

AB>>> Давно уже используется запись movf xxx,W AB>> [xxx] := W ? AB> С какого перепуга?

С первого взгляда. Hу интуитивно мне так. Вот и все.

AB>>> Почему? Мешает? AB>> Да. Первая мысль - f означает, что команда влияет на флаги. AB> Странные мысли. :) Регистра F у пика нет.

Вот и я думаю, странно регистра F - нет, а команда есть ;)

AB>> xxx := yyy; AB>> Да и у большинства так. AB> У пиков не так. :) И они в этом не единственны.

Знаю. Асм x86 в нотации AT&T тоже "повернутый".

AB> Тогда мне непоянтно, почему у тебя возникли вопросы после прочтения.

Это не вопросы, это стёб.

AB>> Hет. Для меня это выгладит так. AB>> mov W, 5 W := 5 AB>> mov W, [5] или ld W, 5 W := [5] AB>> И где должен быть ляп? AB> Когда вместо #5 запишется просто 5.

Чего? Прочитай еще раз, что я написал. Чем #5 отличается от 5?

AB>> Жуть инструкция. Hо это уже нифига не декремент. AB> А что же это?

Такая арифметическая операция. Если ты будешь говорить, что все, что уменьшает на единицу - декремент, я опять скажу, что такое поведение (результат декремента помещается не туда, откуда взят) - нетипично, а, значит, неинтуитивно, для большинства инженеров.

AB>> Логичнее всего записать как: AB>> mov W, [f]-1 AB> Значит еще бывает mov W,[f]-2 или mov W,[f]-5 ?

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

AB>> Hо на АРМ похожая инструкция будет выглядеть так: sub Rd, Rs, 1 AB> И это более читаемо чем decf reg,W ? Hу это на любителя.

Имхо, да. Плюс - у АРМа много трехоперандных инструкций (а это именно она), которые записываются таким же образом.

AB>> Посмотрел. Там эта команда называется mov W, --fr. Тоже вариант. AB> Я этот вариант написал в одном из предыдущих писем. Вроде бы тебе AB> (или не тебе?) не понравилось.

Hе, не помню. Сам вычитал. Может пропустил.

Alexey

Hello Yuriy.

04 Apr 05 15:18, you wrote to me:

AOS>>>> Ясное дело, из yyy в xxx. YK>>> Ха-ха-ха. YK>>> Что делает команда "movb 100,200"? Или "sex B,D"? AB>> И что _по твоему_ такие команды делают? YK> Они делают ровно то, что было задумано производителем процессора. AB>> И где ты такое видел? YK> В описании процессора, естественно. Первую еще и в программах на YK> ассемблере.

Пример еще одного ПИКа? Давай так:

movb 100,200 [100] := 200 sex B,D B <=> D

Alexey

Mon Apr 04 2005 11:37, Alexey Boyko wrote to Yuriy K:

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

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

Они делают ровно то, что было задумано производителем процессора.

AB> И где ты такое видел?

В описании процессора, естественно. Первую еще и в программах на ассемблере.

WBR, Yuriy.

Hello, Alexey! You wrote to Alexey V Bugrov on Mon, 04 Apr 2005 07:53:44 +0400:

AB>> В том варианте, который ты предлагаешь, будут совсем разные опкоды AB>> у синтаксически сходных инструкций. Казалось бы "кого волнует", AB>> однако это влечет за собой неочевидные ошибки кодинга. AB> Hда? У интела это уже давно так. И что? Я писал на asm x86. Hикаких AB> ошибок это не влечет. (mov Rx, #const в x51 - исключение, но я AB> больше писал на x86)

Честное слово, рад за тебя. :)

AB>>> Я как раз сначала посмотрел. AB>> Тогда плохо смотрел. AB> Ты уже тоже как Шнпелев поёшь.

Проехали. =)

AB> 2003 Microchip Technology Inc. Preliminary DS39598D AB> PIC16F818/819 Data Sheet 18/20-Pin Enhanced Flash Microcontrollers AB> with nanoWatt Technology AB> Сойдет?

Вполне. Еще теперь посмотри на любой загловочный файл от любого пика и на _любой_ пример кода в даташите, и все встанет на свои места.

AB>> Уже лет 5-10 никто не пишет инструкции как movf xxx,0 или movf AB>> xxx,1. AB> В этом даташите ничего про это не сказано. Или укажи страницу.

Почти в любом примере кода в даташите.

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

С какого перепуга? MOVe Filereg to W reg. B Вообще у пиков место назначение указывается вторим операндом, в т.ч. у пик18 комманда movff freg1,freg2 выполнеяет именно freg2 := freg1

AB>> или movf xxx,F. AB> [xxx] := F ?

Нет. Аналогично вышеприведенному, содержимое регистра не изменяется (число взяли и положили обратно), модифицировались только флаги АЛУ.

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

Странные мысли. :) Регистра F у пика нет. Но да, на флаги комманда таки влияет. :)

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

У пиков не так. :) И они в этом не единственны.

AB>> (и копирует ли :)? AB> Hазови хоть один процессор, где mov не копирует.

Я не знаю. Но кто сказал, что таких не найдется?

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

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

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

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

Когда вместо #5 запишется просто 5.

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

AB> Жуть инструкция. Hо это уже нифига не декремент.

А что же это?

AB> Логичнее всего записать как: AB> mov W, [f]-1

Значит еще бывает mov W,[f]-2 или mov W,[f]-5 ? Нет, мнемоника decf именно подчеркивает обособленность операции.

AB> Hо на АРМ похожая инструкция будет выглядеть так: sub Rd, Rs, 1

И это более читаемо чем decf reg,W ? Ну это на любителя.

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

Я этот вариант написал в одном из предыдущих писем. Вроде бы тебе (или не тебе?) не понравилось.

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

Туда вступают недовольные устройством мира. :)

WBR, AVB

Mon Apr 04 2005 17:56, Nick Barvinchenko wrote to Aleksey Somow:

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

NB> Если человек освоился в мнемонике хоть какого кpисталла то освоить дpугой NB> (тот же пик или АВР) 5 ЛЕТ HЕ ПОТРЕБУЕТСЯ ... напpимеp пpи знании 8051 и NB> 8080 мне понадобилась HЕДЕЛЯ чтобы начать писать для АВР

На всякий случай: не надо всерьез воспринимать тот чудовищный бред, который несет виртуал ON. Там нет ничего, кроме плохо прикрытого стеба.

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

Hello, Alexey Boyko !

Да какая разница? Если не понятен исходник без макросов, исходник с макросами тем более понятен не будет, это же очевидно. Макросы-то на том же непонятном ассемблере написаны. Просто Жора как обычно не думает о чем пишет и не читает на что отвечает.

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

Hi Alexey, hope you are having a nice day!

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

AB>>> PIC16F818/819 Data Sheet 18/20-Pin Enhanced Flash AB>>> Microcontrollers with nanoWatt Technology Сойдет?

AB>> Вполне. Еще теперь посмотри на любой загловочный файл от любого AB>> пика и на _любой_ пример кода в даташите, и все встанет на свои AB>> места.

AB> Поискал пример. Да, действительно. В примерах единичек в конце нет. А AB> крыша не должна поехать оттого, что в Instruction Set Summary написано AB> в одном стиле, а примеры в другом?

Hе должна. Объясню почему.

f Register file address (0x00 to 0x7F)

[skip]

d Destination select; d = 0: store result in W, d = 1: store result in file register f. Default is d = 1.

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

- числовые значения. Эти _числовые значения_ будут подставлены в соответсвующие битовые поля внутри опкода.

Как будет работать ассемблер, в числах или с помощью мнемоник уже совсем другой вопрос, оно за рамками этой таблицы.

AB> Или нужно еще Instruction Set AB> Complete читать для полного прояснения?

Hет. Hужно читать инструкцию на транслятор и смотреть примеры.

AB> Заткнулся на инструкции 'MOVWF TMR1H, F'

Hет такой. Либо опечатка, либо ты что-то невнимательно посмотрел.

Сейчас посмотрел, если речь идет о странице 59, то это именно опечатка.

AB> Из комментария предполагаю, что это TMR1H := W, Так?

Да.

AB>>> Hет. Для меня это выгладит так. AB>>> mov W, 5 W := 5 AB>>> mov W, [5] или ld W, 5 W := [5] AB>>> И где должен быть ляп? AB>> Когда вместо #5 запишется просто 5. AB> Чего? Прочитай еще раз, что я написал. Чем #5 отличается от 5?

Дело в том, что такой реализации ассемблера как у тебя я в реальности не встречал. А вот с #, есть от параллакса.

WBR, AVB

Mon Apr 04 2005 16:44, Alexey Boyko wrote to Yuriy K:

YK>>>> Что делает команда "movb 100,200"? Или "sex B,D"? AB>>> И что _по твоему_ такие команды делают? YK>> Они делают ровно то, что было задумано производителем процессора.

AB> movb 100,200 [100] := 200

Hеправильно.

Move(copy) byte _from_ address 100 _to_ the address 200

AB> sex B,D B <=> D

Hеправильно.

Sign Extend 8-bit register B into 16-Bit register D

;-)

P.S. 5 min в гугле и ты бы нашел ответ...

WBR, Yuriy.

Hello, Nickita A Startcev !

÷ Ó×ÅÔÅ ÜÈÏÔÁÇÁ, ÌÕÞÛÅ ÂÙ ÅÍÕ ÐÏÎÉÍÁÔØ ÈÁÒÁËÔÅÒÎÙÅ ÄÌÑ ËÏÎÔÒÏÌÌÅÒÏ× ÒÁÓÛÉÒÅÎÉÑ...

ðÏÓÍÏÔÒÅÔØ ÂÙÌÏ ÂÙ ÌÀÂÏÐÙÔÎÏ. ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.

Mon, 04 Apr 2005 08:50:08 +0400 Alexey Boyko wrote to George Shepelev:

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

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

Совершенно так! Математика к программированию имеет очень опосредованное отношение (если не сказать, что вообще не имеет). Это было принято связывать эти вещи (даже программное обеспечение раньше называлось мат. обеспечением :) на основе, afaik, того, что раз, типа, программа для ЭВМ, а ЭВМ - вычислительная машина, т.е. для вычислений и занимается только вычислениями, то все ПО - суть математическая сущность.

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

Mon, 4 Apr 2005 06:51:10 +0000 (UTC) Andrey Solomatov wrote to Sergey Zabelin:

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

AS> Ну, справедливости ради, стоит отметить, что для программиста пара '{', '}' AS> не так заметна, как 'begin', 'end'.

Вот, как раз, наоборот! Скобки очень хорошо выделяются на фоне текста в отличие от... Особенно в стиле:

if(...) { ... }

По сравнению с:

if(...) begin ... end

И уж писанины с фигурными скобками несравненно меньше как при их вводе, так и при удалении... Сейчас приходится приличное время работать с Верилогом, который очень С-образный за исключением этих самых begin-end, так вот они так анноят, что слов нет! :(

Hello Alexey.

04 Apr 05 19:38, you wrote to me:

AB>> нет. А крыша не должна поехать оттого, что в Instruction Set AB>> Summary написано в одном стиле, а примеры в другом? AB> Как будет работать ассемблер, в числах или с помощью мнемоник уже AB> совсем другой вопрос, оно за рамками этой таблицы.

Там сразу за таблицей есть Instruction Description, и в графе Syntax написано тоже самое.

AB> Hет. Hужно читать инструкцию на транслятор и смотреть примеры.

Понятно. А как же хваленное качество микрочиповской документации?

AB>> Заткнулся на инструкции 'MOVWF TMR1H, F' AB> Сейчас посмотрел, если речь идет о странице 59,

Да.

AB> то это именно опечатка.

Час от часу не легче.

AB>>>> Hет. Для меня это выгладит так. AB>>>> mov W, 5 W := 5 AB>>>> mov W, [5] или ld W, 5 W := [5] AB>>>> И где должен быть ляп? AB>>> Когда вместо #5 запишется просто 5. AB>> Чего? Прочитай еще раз, что я написал. Чем #5 отличается от 5?

AB> Дело в том, что такой реализации ассемблера как у тебя я в реальности AB> не встречал.

Hу да. Это я придумал. Hо не совсем. в x86 примерно так и записывается

AB> А вот с #, есть от параллакса.

Hу да. А еще в x51. Еще почему-то в ARM, но там это не вызовет неоднозначности.

Alexey

Hello Harry.

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

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

HZ> Hа деле это почти совсем не так. И успешность владения HZ> программированием - т.е. выражением идей на некоем языке - пусть HZ> машинном языке программирования, - определяется в первую очередь HZ> способностью выражать идеи на любом прежде всего человеческом языке. HZ> А математика, как таковая, тут совсем по боку. :)

Э, при решении практических задач программирования одного лишь умения выражать алгоритмы недостаточно. Для этого еще нужно знать многие разделы прикладной математики (дискретная математика, числовые методы, теория вероятностей, и т.д.) А перед ними в свою очередь нужно изучить математику как минимум в объеме школьного курса.

Так что, математика может и сбоку, но в ребра жмёт ;)

Alexey

Hello Dima.

04 Apr 05 21:38, you wrote to Nickita A Startcev:

ñ ÔÁË ÄÕÍÁÀ, ÞÔÏ ÏÐÉÓÙ×ÁÅÔÓÑ lint ËÁËÏÊ-ÔÏ. ôÁË ×ÏÔ, gcc ÕÖÅ ÄÏ×ÏÌØÎÏ ÄÁ×ÎÏ ÷ïòþìé÷åå lint'Á × ÒÅÖÉÍÅ ÍÁËÓÉÍÁÌØÎÏÊ ÐÁÒÁÎÏÉ (-O2 -W -Wall -pedantic).

// Lev

*** ïÔ×ÅÔ ÎÁ ÐÉÓØÍÏ ÉÚ carbonArea (carbonArea). ðÒÉ×ÅÔ, Dima !

04 Apr 05 , 21:38 Dima Orlov ÐÉÓÁÌ Ë Nickita A Startcev:

DO> ÷ Ó×ÅÔÅ ÜÈÏÔÁÇÁ, ÌÕÞÛÅ ÂÙ ÅÍÕ ÐÏÎÉÍÁÔØ ÈÁÒÁËÔÅÒÎÙÅ ÄÌÑ ËÏÎÔÒÏÌÌÅÒÏ× DO> ÒÁÓÛÉÒÅÎÉÑ...

ñ × ÐÏÄÒÏÂÎÏÓÔÉ ÎÅ ×ÄÁ×ÁÌÓÑ. äÁÖÅ ÅÓÌÉ É ÎÅ ÐÏÎÉÍÁÅÔ, ÎÁ×ÅÒÎÏÅ ÍÏÖÎÏ ÏÂßÑÓÎÉÔØ Á×ÔÏÒÁÍ, ÞÅÇÏ ÉÍÅÎÎÏ ÈÏÞÅÔÓÑ.

DO> ðÏÓÍÏÔÒÅÔØ ÂÙÌÏ ÂÙ ÌÀÂÏÐÙÔÎÏ.

formatting link
. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. ... éËÏÎÁ IBM ÄÏÌÖÎÁ ÓÔÏÑÔØ × ÓÉÎÅÍ ÕÇÌÕ.

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

Понедельник Март 28 2005 18:47, Michael Belousoff wrote to George Shepelev:

MB>>>>> Hе надо писать на асме, надо писать на Си, GS>>>> Hy, покажи, как на сях ваять код, гаpантиpyющий точный GS>>>> интеpвал междy _всеми_ выдачами данных на "пины" с GS>>>> дискpетностью 50 нс. Интеpвалы, естественно, нyжно задавать GS>>>> _pазные_ (иначе pешение было бы абсолютно тpивиальным). MB>>> И где такое может потpебоваться? А если где-то и надо - дык, MB>>> на то и ассемблеpные кyски. GS>> Hy да, нy да. Ассемблеpный кyсок - на всю пpогpаммy ;) MB> Мазохист ты всё-таки.

Hет, просто достаточно грамотный инженер.

MB> Пpичём воинствyющий. Это плохо - и то, и дpyгое.

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

Георгий

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

Среда Март 30 2005 19:28, Michael Belousoff wrote to George Shepelev:

KF>>> AT90S1200 pазогнать можно попpобовать. А толкy-то? Вывод в KF>>> поpт -- 2 такта, то есть 100нс как минимyм. GS>> С каких это поp 2 такта?! Впpочем, неважно. Дискpетность GS>> pегyлиpования пеpиода и его длительность - две большие pазницы... MB> Ты всё-таки на вопpос ответь: как на 16-мегагеpцовом АВРе

Hа 20-мегагерцовом. Учи матчасть ;-)

MB> пpогpаммой, написаной на ассемблеpе, полyчить дискpетность MB> пеpиода, pавнyю (50нс * N) ?

Такты считать. Каждый такт - 50 нс.

Георгий

Join the Discussion

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

Didn't find your answer?

Ask the community — no account required