Mar 08, 2005 Last reply: 21 years ago 1304 Replies
A
Alexey V Bugrov
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
Didn't find your answer? Ask the community — no account required.
D
Dima Orlov
Hello, Olga Nonova !
Hе бывает задач на быстродействие, мы не на олимпиаде по кодированию.
С уважением, Дима Орлов.
D
Dima Orlov
Hello, Alex Gavrikov !
Давай если ты что-то утверждаешь, то я буду у тебя и спрашивать. А ты уж спросишь у Сименса или у шмименса, мне без разницы. Так вот если ты утверждаешь, что некий язык паскалеподобный, изволь это утверждение чем-то аргументировать. Итак, что именно в этом языке подобно Паскалю, а что не подобно?
С уважением, Дима Орлов.
A
Alexey Boyko
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
A
Alexey Boyko
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
Y
Yuriy K
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.
A
Alexey V Bugrov
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
A
Alex Kouznetsov
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. Там нет ничего, кроме плохо прикрытого стеба.
Пока, Алексей
D
Dima Orlov
Hello, Alexey Boyko !
Да какая разница? Если не понятен исходник без макросов, исходник с макросами тем более понятен не будет, это же очевидно. Макросы-то на том же непонятном ассемблере написаны. Просто Жора как обычно не думает о чем пишет и не читает на что отвечает.
С уважением, Дима Орлов.
A
Alexey V Bugrov
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
Y
Yuriy K
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
ðÏÓÍÏÔÒÅÔØ ÂÙÌÏ ÂÙ ÌÀÂÏÐÙÔÎÏ.
ó Õ×ÁÖÅÎÉÅÍ, äÉÍÁ ïÒÌÏ×.
H
Harry Zhurov
Mon, 04 Apr 2005 08:50:08 +0400 Alexey Boyko wrote to George Shepelev:
AB>>> Можно, конечно. Hо это делает программу читаемой только AB>>> создателем макросов. GS>> Hе только. Делает программу читаемой для тех, кто умеет пользоваться GS>> этими макросами. А использование арифметических выражений делает GS>> запись понятной только для тех, кто не прогуливал в школе математику.
AB> Опа. А что программировать уже можно не зная математики ;)
Совершенно так! Математика к программированию имеет очень опосредованное отношение (если не сказать, что вообще не имеет). Это было принято связывать эти вещи (даже программное обеспечение раньше называлось мат. обеспечением :) на основе, afaik, того, что раз, типа, программа для ЭВМ, а ЭВМ - вычислительная машина, т.е. для вычислений и занимается только вычислениями, то все ПО - суть математическая сущность.
На деле это почти совсем не так. И успешность владения программированием - т.е. выражением идей на некоем языке - пусть машинном языке программирования, - определяется в первую очередь способностью выражать идеи на любом прежде всего человеческом языке. Т.е. если кто-то не может внятно и четко формулировать свои мысли/идеи на родном языке, то и с программированием у него, скорее всего, будут проблемы (понятно, что и тут есть исключения, но это редкость). А математика, как таковая, тут совсем по боку. :)
H
Harry Zhurov
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, так вот они так анноят, что слов нет! :(
A
Alexey Boyko
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
A
Alexey Boyko
Hello Harry.
05 Apr 05 05:44, you wrote to me:
AB>> Опа. А что программировать уже можно не зная математики ;)
HZ> Hа деле это почти совсем не так. И успешность владения HZ> программированием - т.е. выражением идей на некоем языке - пусть HZ> машинном языке программирования, - определяется в первую очередь HZ> способностью выражать идеи на любом прежде всего человеческом языке. HZ> А математика, как таковая, тут совсем по боку. :)
Э, при решении практических задач программирования одного лишь умения выражать алгоритмы недостаточно. Для этого еще нужно знать многие разделы прикладной математики (дискретная математика, числовые методы, теория вероятностей, и т.д.) А перед ними в свою очередь нужно изучить математику как минимум в объеме школьного курса.
Так что, математика может и сбоку, но в ребра жмёт ;)
. ó Õ×ÁÖÅÎÉÅÍ, HÉËÉÔÁ. ... éËÏÎÁ IBM ÄÏÌÖÎÁ ÓÔÏÑÔØ × ÓÉÎÅÍ ÕÇÌÕ.
G
George Shepelev
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гое.
Что "плохо"? Ты конкретную задачу анализировал? Там везде такты считать нужно. Си разве что инициализацию регистров может выполнить, но мне проще эти несколько строк на ассемблере написать, чем разбираться в нюансах сишного компилятора при работе с новым чипом...
Георгий
G
George Shepelev
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цовом АВРе