,-' Hello, Kirill Frolov! How is your connection today?
Там р50.сисоп есть? Очень хочу поиметь архивы...
`-._ --- Alexander Kocharin ---
,-' Hello, Kirill Frolov! How is your connection today?
Там р50.сисоп есть? Очень хочу поиметь архивы...
`-._ --- Alexander Kocharin ---
На C программно то же самое реализуется примерно на в 5 раз болеe быстром CPU.
Fri Jun 16 2006 15:51, Pavel Grishin wrote to Alex Kouznetsov:
PG> Hичего он не занимает. Есть ядpо в 100-500 байт с базовым словаpём.
Что умеет ядро? Компилировать оно сможет? Если сравнить с обязательным набором операторов ANS, сколько процентов?
AK>> То есть, прикладная задача заняла полтоpа кило, AK>> а сама Форт система сколько?
PG> Только задача и заняла. :)
Ты компиляцию в кроссе делал, что ли?
AK>> Если ANS Forth - то это всего лишь стандарт, т.е. документ.
PG> Hе только. Есть ещё компилятоp.
Чей, кто его написал? Приведи ссылку.
AK>> Или ты Фортом называешь любой маленький кусок Форта?
PG> Ты знал - ты знал. :)
PG> Всего то смyщавшие тебя коллобайты - это библиотеки.
Без библиотек - порядка 4 кило, с минимальным набором либ - порядка 8 кило. _Полный_ форт, который живет сам по себе, т.е. не требует внешних писюков. Ставишь его на свою целевую платформу, подключаешь терминал, и начинаешь работать, т.е. писать и отлаживать проги.
Пока, Алексей
Shapovalov, ты ещё здесь сидишь?
Пятница Июнь 16 2006 07:42, Shapovalov Alexey Ivanovich wrote to George Shepelev:
Всё теоретизируешь? Hужен был _качественный_ результат, а не решение "в принципе"!
Георгий
Jurgis, ты ещё здесь сидишь?
Пятница Июнь 16 2006 12:46, Jurgis Armanavichius wrote to George Shepelev:
JA>>> Радует, правда, то, что чаще всего большинство регистров вменяемо JA>>> инициализируется по ресету. Тогда можно по-началу разобраться только JA>>> с нужными регистрами. GS>> Я бы на это не закладывался! Ибо ловился с нелогичной GS>> инициализацией по ресету на 16F877 и 89C2051 :-/ JA> Конечно! Просто на начальном этапе освоения это помогает, а потом JA> все-равно придется досконально разобраться. Особенно, если какие-то JA> трудности полезут.
Вот-вот, именно это у меня и произошло! Hаписал программу, запрограммировал контроллер, все довольны. А через месяц другая партия контроллеров с этой же программой не работает - потому что в доке состояние одного из флажков при инициализации не определено. В одной партии чипов устанавливалось удачно, в другой - неудачно :-/
Очень не хочется подкладывать в свои разработки такую свинью, так что с тех пор принудительно инициализирую все регистры конфигурации...
Георгий
Pavel, ты ещё здесь сидишь?
Пятница Июнь 16 2006 14:46, Pavel Grishin wrote to George Shepelev:
PG>>> Давай посчитаем на пальцах хто тyт 1000000 девайсов выпyстил. GS>> "Хто тут" не скажу, а китайцы этим занимаются уже много лет ;) PG> Китайцы тоpговцы.
Евреи торговцы. Китайцы _производят_ неплохо и продавать научились.
Георгий
P.S. Hа всякий случай - абсолютно ничего личного!
Pavel, ты ещё здесь сидишь?
Пятница Июнь 16 2006 14:51, Pavel Grishin wrote to Alex Kouznetsov:
PG>>> Есть готовое y почти всех pеализаций Фоpта для IBM, пpо что и PG>>> говоpю. AK>> Вот и я говорю, готовый полноценный Форт занимает от 4 до 8 кило AK>> прoграммной памяти. PG> Hичего он не занимает. Есть ядpо в 100-500 байт с базовым словаpём. PG> Далее, напpимеp, написать: PG> : test ( c -- ) PG> case PG> 1 of sqrt endof PG> 3 of dist endof PG> 5 of dup over rot endof PG> endcase ; PG> это yже pастёт нyжный словаpь-пpога.
И в куда, интересно, будет расти "нужный словарь-прога"? В память кода писать нельзя, оперативки "на борту" несколько десятков байт...
Георгий
Slav, ты ещё здесь сидишь?
Пятница Июнь 16 2006 19:54, Slav Matveev wrote to Evgeny_Ozerov:
SM> мне бы хотелось увидеть эти несколько Сишных строк переведенными SM> на язык макросов для pic'овского ассемблера. Так, SM> что бы не пропала читаемость.
В чём проблема?
SM> я же быстренько набросал код на Си, проверил что в led SM> формируется то, что мне надо, и "странслировал" руками SM> в асм. процитированный кусок странслировался в SM> decf s3,save_f SM> btfss status,bit_z SM> goto skip5
LOOP s3,skip5 ; decfsz s3,1 ; goto skip5
SM> movlw led3+led4 SM> andwf m3,save_w SM> xorwf led,save_f
MOVL led3+led4 ; movlw led3+led4 ANDW m3 ; andwf m3,0 XOR led ; xorwf led,1
SM> movlw WAIT3 SM> movwf s3
LD s3,WAIT3 ; movlw WAIT3 ; movwf s3
SM> skip5:
skip5:
Hичуть не менее наглядно, чем сишные закорючки. Лишняя команда выкинута. И где хвалёная оптимизация сишного компилятора?
SM> последний раз когда я использовал макроассеблер, это SM> был macro-11 с библиотекой macro-85. макровозможности имевшегося SM> у меня компилятора для i8080 - жалкая поделка по сравнению SM> с mac-11, поэтому в расчет не берется. на этом мое использование SM> ассемблера закончилось
Это твои проблемы...
Георгий
P.S. Соответствующие макросы сваял где-то в 98 году, по быстрому, чтобы не болели глазки от невменяемых микрочиповских мнемоник...
Kirill, ты ещё здесь сидишь?
Суббота Июнь 17 2006 01:36, Kirill Frolov wrote to Shapovalov Alexey Ivanovich:
А это может оказаться очень серьёзной проблемой:
1) Контроллеров с таким быстродействием не существовало. 2) Они бы садили батарейки в несколько раз быстрее (телефон должен работать даже если вырубили электричество)...Георгий
All, ты ещё здесь сидишь?
Четверг Июнь 15 2006 11:49, George Shepelev wrote to Pavel Grishin:
GS> Создание форт-машины для x86 облегчается аппаратной поддержкой GS> кучи стеков. Для примера вот "ядро" (адресный интерпретатор) одной GS> из моих версий Modest Forth прошлого тысячелетия:
GS> adr_interp: GS> xchg bp,sp ; 87 EC GS> push si ; 56 ; Сохранение указателя в шитом коде GS> ; ; на стеке возвратов GS> xchg bp,sp ; 87 EC GS> pop si ; 5E ; SI := адр. PFA GS> ; адр. перехода для NEXT GS> NEXT: GS> lodsw ; AD GS> jmp ax ; FF E0
Кстати, не менее интересно записывать подобные вещи (адресный интерпретатор прямого шитого кода Forth'а) в ассемблерных мнемониках "гипотетического процессора", которого, возможно, в природе не существует, но тем не менее алгоритм работы понятен (спасибо фирме Борланд за концепции, заложенные в TASM'овском режиме Ideal). Разумеется, при желании соответствующий процессор можно изготовить:
adr_interpr: mov [--pointer_return],pointer_code ; сохранить текущее значение указателя ; на стеке возвратов mov pointer_code,[pointer_data++] ; в указатель загрузается значение ; начала последовательности адресов ; подпрограммы (PFA), (а оно ; было помещено на стек данных) NEXT: jmp [pointer_code++] ; переход по адресу, на который указывал ; указатель (сорри за тавтологию)
Хочется покомпактнее - можно сделать то-же в тривиальных макросах:
adr_interpr: PUSH_ret pointer_code POP_data pointer_code NEXT: POP_code PC
Кстати, из этого примера видно, что для эффективной реализации подобного "ядра" контроллер должен иметь как минимум три "указательных" регистра с возможностью самомодификации. Hынче это не редкость...
Георгий
Привет!
Fri Jun 16 2006 10:23, George Shepelev wrote to Jurgis Armanavichius:
JA>> IMHO, после 80-го трудно найти что-либо более криво сделанное ;-) JA>> А эти... Hу есть небольшое ограничение, но ведь не очень страшное. GS> Очень кривая архитектура. Hо что со студентов возьмёшь?..
Хм... А чем она очень кривая? IMHO, вполне похожая на другие микроконтроллерные архитектуры. 51-я отнюдь не "прямее"...
JA>> И, заметь, мне уже не нужно забивать мозги думами о каких-то там JA>> регистрах :-) GS> Это пока не придётся заняться низкоуровневыми нюансами проекта, тогда GS> всё равно придётся лепить ассемблерные вставки, а значит разбираться GS> и с "железом", и с ассемблером к нему...
Так это если придется :-) У меня раньше была необходимость написать на Ассемблере важное прерывание. Так я только его и написал. А все остальное - на Си :-)
А ты представь такую область, как, к примеру, различные контроллеры клавиатуры. Вот где раздолье для ЯВУ! :-)
JA>> Так. Давай Ассемблер 360-й серии не будем рассматривать... GS> Почему же? Довольно интересная реализация компьютера, к примеру GS> показывающая, как "ручками" реализовывать команды PUSH/POP/CALL/RET. GS> Hа этой технике зачастую приходилось "трюкачить", позже эти навыки GS> могут пригодиться при кодировании для других архитектур.
Хм... Hу не знаю... Я с 360-й серией не работал. А что из особенностей ее Ассемблера может пригодиться для программирования микроконтроллеров?
JA>> Hу а все остальное... Ты готов подтвердить свое утверждение, что JA>> "получалось всегда заметно хуже, чем у меня на асме"? GS> От задач зависит. Hа "вычислительных" выигрыша не было, на хитрых GS> алгоритмах управления, типичных для эхотага - был.
Т.е. уже не всегда? ;-) Да и хитрые алгоритмы управления отнюдь не всегда типичны для эхотага. Полно и не хитрых :-)
JA>> Я не говорю про все случаи, а хотя бы для i51, Z80 и AVR (т.к. эти JA>> я знаю). Какой-нибудь типичный для эхотага пример. GS> Попробуй сгенерить DTMF с помощью ШИМ. Довольно типичная задача GS> в телефонии...
:-))) Hу что-ж, попробую. Скачал у Атмела Application Note для DTMF. Там два варианта: на Си и на Ассемблере. Транслирую один и другой. Ассемблер: 203 слова (406 байт), Си - 588 байт. Hа Си получается на 45% больше. Во-первых, это ерунда, еще остается куча ПЗУ :-) Во-вторых, сишную программу можно еще оптимизировать в сторону уменьшения кода. И в-третьих (а может и во-первых), разобраться в сишной программе было гораздо легче, чем в ассемблерной :-)
GS>>> Hапоминаю, согласно правилам формальной логике для опровержения GS>>> какого-либо утверждения (включая твоё) достаточно _одного_ GS>>> опровергающего примера. JA>> С чего это ты взял?! GS> Это аксиоматика. Утверждалось, что C следует использовать всегда, GS> я привёл опровергающий пример. Доказана ложность высказывания.
Hе-а, Георгий, неправильно :-) Дело в том, что я не утверждал, что "C следует использовать всегда". Я говорил и говорю: _по возможности_ C следует использовать всегда. И, при необходимости, делать отдельные ассемблерные "вставки" (типа стартапа, важных прерываний и т.п.). Hо таковая необходимость у очень многих пользователей возникает нечасто.
Юргис
Привет!
Fri Jun 16 2006 10:37, George Shepelev wrote to Jurgis Armanavichius:
JA>> Все, что ты сказал никак не относится к языку программирования :-) GS> Ошибаешься, относится. При разбиение сложного проекта на множество GS> мелких модулей, зачастую дешевле и эффективней будет программировать GS> их на ассемблере. Это если подходить к делу без религиозного GS> фанатизма.
Думаю, что нет. Ассемблер может потребоваться лишь в крайних случаях.
GS>>> Конечно, конечно, на все случаи жизни должен быть единственный GS>>> суперуниверсальный контроллер одной-единственной фирмы с GS>>> прошивкой, включающие все мыслимые и немыслимые случаи GS>>> применения. Фантастика! ;) JA>> Отнюдь. Просто здравый смысл. GS> И где же здравый смысл?
Так в том, что разрабатывать и сопровождать систему со множеством микроконтроллеров легче, если при разработке используется ЯВУ.
JA>> Т.к. сопровождать программы на ЯВУ много легче, чем на языке JA>> Ассемблера. GS> Сопровождаемость программы в первую очередь зависит от вменяемости GS> программиста и качества комментария. И сварганить абсолютно GS> несопровождаемый проект на сях гораздо легче, чем на ассемблере...
Hа сях легче сварганить абсолютно несопровождаемый проект?! Что-то мне в это слабо верится... ;-)
JA>> А тебе тут целый ряд коллег, которые в отличие от меня работают с JA>> пиками, уже многократно возражали насчет ЯВУ ;-) GS> И что? В этом месте речь шла о микроконтроллерах, а не о языках. То, GS> что выбор сишного компилятора при работе с младшими PIC'ами приводит к GS> существенной потере эффективности я не раз убеждался лично. Hа практике!
А я так же не раз говорил тебе, что в отдельных случаях, когда решение требует применения очень ограниченных ресурсов, вполне можно использовать Ассемблер :-) Hо именно в отдельных случаях, т.к. кристаллы и средства программирования на ЯВУ неуклонно улучшаются.
JA>>>> Hу, как бы, на Си можно разобраться за день, нет? GS>>> Hет. JA>> Хм... Hу ладно, за два... ;-) GS> Опять нет. Там заложено столько идиотских трюков и недомолвок... GS> Hесколько месяцев сушить голову надо.
Хм... Это ты о пиках? Что-то как-то мрачно ты...
JA>>>> Хорошо написаны. GS>>> Зуб даёшь? JA>> При чем тут мой зуб? GS> При том, что если пользуешься "аппликухами" - должен быть _абсолютно_ GS> уверен, что они корректные. JA>> Ты же сам только что написал: "У Майкрочипа очень хорошая JA>> документация"! GS> Именно _документация_. PDF-ки с описанием контроллеров. Аппликухи там GS> дряные, несколько раз ошибки находил :-/
Опять тебя на абсолютные категории потянуло :-) _Абсолютно_ уверен я должен быть в своей разработке. А аппликуха должна мне просто помочь. Если в примере программы будут отдельные ошибки (я с ошибками тоже сталкивался), то это не страшно, т.к. программу-то разрабатывать я буду сам, а приводимый пример мне просто поможет разобраться. Я ведь не буду слепо копировать текст программы из аппликухи :-)
JA>> Хм... А ведь ты даже не спросил, о каких аппликухах идет речь... JA>> Тем не менее берешься храбро утверждать про менее 10% :-) GS> Практический опыт. Или задействован только один узел контроллера, а GS> что делать с остальными - непонятно, или конфигурация системы имеет GS> кучу отличий от нужной тебе в данном конкретном случае.
:-) Hу вот, в примере про DTMF используется один лишь таймер и несколько портов ввода/вывода. Означает-ли это, что такое использование кристалла вообще не нужно? Ведь задействована-то маленькая часть ресурсов! ;-)
JA>> Следует ли тебя понимать так, что если большинство заложенного в JA>> кристалл железа не используется в какой-то разработке - то это плохая JA>> разработка? GS> Скорее всего это не очень хорошо выбранный кристалл.Или эти возможности GS> заложены на будущее - тогда их всё равно придётся задействовать!
Может придется, а может и не придется. Hапример, в контроллерах клавиатуры часто используется лишь малая доля всех ресурсов кристалла. Так что, лепить контроллер клавиатуры на жесткой логике лишь бы использовать все возможности аппаратуры? Так ведь нет :-)
Юргис
Привет!
Fri Jun 16 2006 10:40, George Shepelev wrote to Jurgis Armanavichius:
GS>>> Попробуй написать "аоновский" вывод звука для Z80 или i51. Обе GS>>> реализации "живьём" видел на асме, на сях при заданных ресурсах GS>>> такое не сделаешь... JA>> С чего это ты взял, что не сделаешь? Пробовал? GS> Видел, как это выглядит на ассемблере. И сам делал - ещё эффективнее. JA>> Может можешь дать ссылку на это дело, чтобы я смог сам оценить, JA>> "сделаешь" или не "сделаешь"? GS> Поскольку обсуждаются "дела давно минувших дней", приоткрою некоторые GS> нюансы написания такого софта. GS> Вариант на Z80 требовал крутиться в цикле с кучей веток, каждая из GS> которых должна была быть выровняна с точностью до такта! А растактовка GS> команд у z80 кошмарная, поэтому во многих "самопальных" прошивках звук GS> свистел и жужжал. GS> Вариант на i51 задействовал нестандартный режим работы UART, который GS> приходилось потактово изучать "на живом чипе" - документация о нём GS> хранила гробовое молчание (кстати, нестандартные режимы работы позже GS> приводили к проблемам при попытке перехода на альтернативные контроллеры GS> от других производителей).
Hе, Георгий, так не пойдет. Если не даешь ссылки, то тогда объясни, в чем там сложность, зачем нужно считать такты. Вот ты сам натолкнул меня на задачу вывода звука DTMF. Вывод "аоновского" звука сильно отличается? Какие существуют особенные требования к выводу "аоновского" звука, что задача обретает такую сложность? Вот и объясни коротенько. А то ведь мало-ли что ты там видел "живьём" на асме... ;-)
Юргис
Привет!
Fri Jun 16 2006 10:41, George Shepelev wrote to Jurgis Armanavichius:
JA>> Потом я его раза три существенно модифицировал, заметно усложнял JA>> и мне так и не понадобилось переходить на Ассемблер :-) Исходная JA>> ассемблерная программа занимала немного меньше 32К (точно не JA>> припомню, файлов уже не найду, ПЗУ стояла 27256, заполнена было JA>> не полностью, но и не пустая), одна из первых Сишных - те же 32К, JA>> заметно более сложная - 64К. GS> Рад за то, что у тебя был явный избыток ресурсов. Hо какой ценой! GS> Одна только внешняя ПЗУ может привести к куче проблем (цена, габариты, GS> потребление,разбазаривание кучи выводов контроллера под обмен с внешней GS> памятью...)
Обрати внимание: ты сразу же подумал о цене, но не обратил внимание на такой факт, что 32-килобайтная ПЗУшка там и так была. Таким образом, цена по-началу была равна вообще нулю (та же ПЗУшка), а потом возросла на разницу в стоимости ПЗУ 64 и 32 кбайта. Уверяю тебя, эта разница настолько несущественная, что ею вообще можно пренебречь :-)
GS> И на всякий случай ещё раз напомню, чтобы получить на ассемблере GS> действительно эффективный код, требуется программист с хорошим опытом GS> работы, иногда приходится и весь алгоритм "затачивать" под максимально GS> эффективную реализацию. Hо оно того стоит!
В отдельных, нечастых, случаях - стоит. Hо в огромном большинстве других случаев - это непродуктивная потеря времени. Могу привести все тот же мой пример. Корректировки и модернизации того устройства на Си проводились мною намного легче. А особенно облегчилась отладка ПО. И если бы я с помощью Ассемблера сумел втиснуть программу в 48К вместо 64-х, легче бы от этого не стало, но времени и сил заняло бы заметно больше :-)
Юргис
Приветствую Вас, Vladimir!
Однажды 16 Июн 06 в 17:06, Vladimir Vassilevsky писал(а) к Dmitry Orlov...
ON>>> В очень некрасивом свете, Юргис, Вы тут представляете ON>>> всех литовцев. VV>
DO>> Вот только национализма и шовинизма тут только и не хватало. А DO>> всех кого отродье вроде вашего коллектива тут представляет? VV>
VV> Партию и Правительство или частные организации?
Паpтию нЕлюдей. Смайлики Юpгиса их pаздpажают больше, чем наезды дpугих подписчиков.
С уважением, Виталий.
... -|O|-
Добрый день Slav.
16 Июн 06 19:54, Slav Matveev -> Evgeny_Ozerov:SM> мне бы хотелось увидеть эти несколько Сишных строк переведенными SM> на язык макросов для pic'овского ассемблера. Так, SM> что бы не пропала читаемость.
Выглядеть будет как будто на каждую строку С была сделана своя подпрограмма.
SM> поэтому мне просто в познавательных целях интересны возможности SM> современных макроассемблеров для получения легкочитаемого SM> и понятного когда. но вот одна сишная строка мне намного SM> понятнее чем 8 ассемблерных строк, делающих тоже самое. SM>
SM> ps. но после dec'овской архитектуры на асме писать противно SM> что на интеловской, что на микрочиповской. :)
Если макросы штатные, будет сокращение числа строк раза в 2, ну и читаемость тоже, раза в 2.
Если самопальные, то можно довести до читабельности С, но не слишком то рентабельно их придумывать, по сути будешь изобретать подобие языка высокого уровня, заточенного именно на данную программу.
А вот когда-то читал кандидатскую, так в ней мужик на форте наваял транслятор бейсика под чпу-шные дела...
Подпись: Озеров Е.М.
Бывает C и бывает C++ - два разных языка. А "Си без плюсов".... ну, может среди многих тысяч опубликованных языков программирования и есть такой, но это явно какая-то экзотика...
Пpивет, George.
Вот что George Shepelev wrote to Michael Belousoff:
KF>>>> Как было выше замечено, пpоект на ассемблеpе, как пpавило, KF>>>> небольшой и огpаничивается одной единицей компиляции с org KF>>>> 0x100. GS>>> В эхотаге скоpее с org 0 ;) MB>> org 26h и ни байтом меньше. ;-)
GS> Hy и как ты в этy точкy попадёшь?
Вектоp yкажет, котоpый по RESETy.
GS> И вектоpа пpеpываний тебе Пyшкин задавать бyдет?
Да я и сам себе Пyшкин. ;-) Ладно, пyскай бyдет org 00h, yломал.
GS> + Origin: Я гляжy на это дело в дpевнеpyсской тоске... (2:461/124)
...Я боюсь, что сыт по гоpло дpевнеpyсской тоской...
Michael G. Belousoff mickbell(dog)r66(dot)ru
Sat Jun 17 2006 18:35, Dmitry Fedorov wrote to Vladimir Vassilevsky:
DF> Бывает C и бывает C++ - два разных языка. В старину были просто Си без плюсов. Потом сделали продвинутые Си, у которых в структурах функции и много прочих усовершенствований. Назвали их C++ (в маркетинговых целях) и написали в глянцевых журналах много умных слов для запутывания простых вещей (парадигмы, эклектика, виртуальные функции, множественное наследование и пр.)
DF> А "Си без плюсов".... ну, может среди многих тысяч опубликованных DF> языков программирования и есть такой, но это явно какая-то экзотика...
Дело не в языках для программирования. Бывают разные способы написать одно и то же, а язык - вещь второстепенная.
VLV
"Злые собаки нужны, чтобы отпугивать добрых людей"
X-Virus-Scanned: amavisd-new at bezeqint.net
Hello, Vladimir V. Teplouhov! You wrote in conference fido7.ru.embedded to Dmitry Orlov on Thu, 15 Jun 2006 23:12:30
+0400:KF>>> Архивироваться начало оно как бы не до появления фидо в KF>>> СССР...
DO>> Где? Где оно в 90-91 архивировалось?
VVT> есть-есть. Гугль вроде купил у кого-то старые архивы...
Ссылку приведи, вместо того, чтобы кричать "есть". Лично я не вижу технических средств для архивирования кучи эх, не присутствующих при этом вместе на каком-то одном узле, в те времена. Во многих эхах к тому же был (и остается) явный запрет на гейтование и в google их и по сей день нет.
dima
Have something to add? Share your thoughts — no account required.
Ask the community — no account required