реклама на сайте
подробности

 
 
11 страниц V  « < 7 8 9 10 11 >  
Reply to this topicStart new topic
> Форт (Forth) и MSP430 для изучения, Программирование и исследование на Форт
chu
сообщение Nov 15 2012, 07:34
Сообщение #121


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246





Пропаганда salmari.gif ага

Сообщение отредактировал chu - Nov 15 2012, 07:40
Go to the top of the page
 
+Quote Post
chu
сообщение Nov 15 2012, 13:21
Сообщение #122


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



Цитата(chu @ Nov 14 2012, 03:30) *
Первым желанием было - отредактировать текст, но оставил "как есть",пусть эта "лажа" послужит всем примером - "Форт не прощает ошибок".


вот, лажу исправил
Код
: My_Func     ( L2 L1 X2 X1 X --- N )

        DUP  >R OVER  - R>         \ L2 L1 X2 X1 [X-X1] X
        SWAP >R    >R              \ L2 L1 X2 X1   || R: [X-X1] X
        OVER R> -  >R -            \ L2 L1 [X2-X1] || R: [X-X1] [X2-X]
        SWAP R> M* >R              \ L2 [X2-X1]    || R: [X-X1] L1*[X2-X]
        SWAP R>                    \ [X2-X1] L2 L1*[X2-X] ||  R: [X-X1]
        SWAP R> M* D+              \ [X2-X1] L1*[X2-X]+L2*[X-X1]
        SWAP m/round
       ;


Народ! если вас будут убеждать что на форте только так и приходится писать программы, знайте - вас обманывают. Ни один фортер в здравом уме и трезвой памяти не станет творить такое без особых на то причин ( например - защита от "реверс-инжениринга"). ( по мнению Криса Касперского программы на форте с трудом поддаются "хакингу")
Если случается такой мозголомный ужас - имеет смысл задуматься - " А верно ли я подошел к решению задачи?"
Впрочем, об этом лучше читать уже рекомендованное - Thinking Forth
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 15 2012, 14:42
Сообщение #123


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(chu @ Nov 15 2012, 17:21) *
( по мнению Криса Касперского программы на форте с трудом поддаются "хакингу")

А вроде как наоборот - во многие системы входят слова для "дизфорта", вываливающие исходники по имени слова.
Да что далеко ходить - сборки .net, не прошедшие обфускацию, вываливают все свои потроха по первому требованию


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Nov 15 2012, 16:00
Сообщение #124


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Nov 15 2012, 17:42) *
А вроде как наоборот - во многие системы входят слова для "дизфорта", вываливающие исходники по имени слова.
Да что далеко ходить - сборки .net, не прошедшие обфускацию, вываливают все свои потроха по первому требованию

Сборки Net, Java показывают легко свои "потроха", если не убрана отладочная информация (в другом варианте могут быть проблемы,
скорее всего)
Статя Криса Касперски Защита игр от взлома (статья в журнале хакер) проясняющая некоторые моменты. (Особо действенный способ выполнять программу в рамках эмулируемого и ивестного "только" разработчику программы процессора) А как оно всё реально эффективно...

P.S. Для развития интересна статья к прочтению Криса Касперски Языки, которые мы потеряли (Форт тоже упоминается)
И также стоит ознакомитья с исследовательской статьёй приведённой в книге Брукса Мифический Человеко месяц
начиная с главы.16 (online) Серебряной пули нет — сущность и акциденция в программной инженерии (русское издание данной книги, вроде 2002года )

Цитата(chu @ Nov 15 2012, 16:21) *
Народ! если вас будут убеждать что на форте только так и приходится писать программы, знайте - вас обманывают. Ни один фортер в здравом уме и трезвой памяти не станет творить такое без особых на то причин ...


Такое, только, в моём понимании:

1. Если выполнение будет происходить на "чисто" стековом процессоре (например графический процессор Вводная инфа: Gameduino Игровой адаптер для контролеров)
2.Других возможностей нет "по быстрому" добавить необходимую математику на "регистровой" реализации Форт, например в ассемблере.
или требуется некоторая компактность занимаемого места кодом. (а надстройки (или "инородные"инструменты) по кодогенерации или кросс-компиляции кода не используются)
3. Проверить "абстрактные" оптимизационные возможности на данном коде на разных Форт системах..
4. Из интереса (любви) к чистому искусству.(здесь есть некоторые оправданные аналоги Graphicals Haiku in Forth и код, возможно, с минимумом переделок использовать для этого.
...

Сообщение отредактировал Kopa - Nov 15 2012, 17:54
Go to the top of the page
 
+Quote Post
chu
сообщение Nov 15 2012, 16:12
Сообщение #125


Частый гость
**

Группа: Участник
Сообщений: 95
Регистрация: 13-12-07
Пользователь №: 33 246



"Хорошая идея - приложить к этому делу Форт. Вот его преимущества: простота реализации Форт-машины, компактность p-кода, довольно высокая производительность, сложность декомпиляции и ни на что непохожесть. Форт стоит особняком от всех языков, совсем не стремясь соответствовать человеческим привычкам, "здравому смыслу" и "логике". Разобраться в его идеологии с нуля будет непросто. Хакеру придется нарыть кучу литературы и запастись терпением. Даже если ему не наскучит, разработчик защиты получит хорошую фору по времени, ну а там... мыщъх что-нибудь придумает!"
Защита игр от взлома Автор: ©Крис Касперски ака мыщъх
Go to the top of the page
 
+Quote Post
SBE
сообщение Nov 15 2012, 16:15
Сообщение #126


Частый гость
**

Группа: Участник
Сообщений: 108
Регистрация: 8-09-05
Пользователь №: 8 384



Цитата(chu @ Nov 15 2012, 17:21) *
Народ! если вас будут убеждать что на форте только так и приходится писать программы, знайте - вас обманывают. Ни один фортер в здравом уме и трезвой памяти не станет творить такое без особых на то причин ( например - защита от "реверс-инжениринга"). ( по мнению Криса Касперского программы на форте с трудом поддаются "хакингу")

Увы, не сильно лучшего хватает, как уже упоминал, и в библиотеках расширений. Это не только извращения программистов, это отчасти свойство языка, ну провоцирует он к "мозголомству". И еще, когда глубоко погрузился в написание на форте, это уже не кажется ужасом, все понятно и прозрачно. До тех пор пока погрузился rolleyes.gif
Проблемы с хакингом это во многом следствие неочевидности и сложности для восприятия базового синтаксиса и сложных стековых манипуляций (общепризнанная слабость языка). И тоже самое будет с пониманием кода другим программистом. Плюс бесконечное расширение новыми понятиями и новой лексикой, на выходе может легко дать текст на "птичьем" языке, малопонятном для других разработчиков (проблема для любого программного языка, но для форта такое расширение в гораздо большей степени "и нужно, и можно"). Скажут, что должно в идеале решатся правильной методой программирования, но (это уже как битый руководитель) лучше бы было жизнеспособно и без оной. Тем более для зачастую простых с программной точки зрения микроконтроллерных задач.
Поэтому для командной работы (мы сейчас в основном только так и работаем, что правильно) я Forth поостерегусь применять, кроме случаев действительной нужды в нем.

Цитата
Если случается такой мозголомный ужас - имеет смысл задуматься - " А верно ли я подошел к решению задачи?"

Правильно сказано. В том числе задуматься и про выбор инструментария. rolleyes.gif

P.S. Сам не пробовал, но вроде исходный текст форт восстанавливается по скомпилированному бинарному коду (для некоторых систем). Вот где разгул для хакинга. Не так давно паролил часть слов интерпретатора, дающих доступ к памяти и "потрохам", когда пошли активные поставки изделий в Китай. Больше для очистки совести.
Это к недостаткам Forth никак не не отношу.
Go to the top of the page
 
+Quote Post
SyncLair
сообщение Nov 15 2012, 16:23
Сообщение #127


Местный
***

Группа: Свой
Сообщений: 209
Регистрация: 6-01-12
Пользователь №: 69 197



Цитата(SBE @ Nov 13 2012, 20:15) *
Хотя с другой стороны, я сам когда-то учился программировать на стековой машине советского калькулятора, с сомнительным как видим результатом rolleyes.gif

И я также познавал азы протоассемблера, имея микро опыт в радиолюбительстве это и приводит некоторых людей к микроконтроллеру. Выходит Форт -- некоторое возвращение к истокам от современного Си ?


--------------------
Go to the top of the page
 
+Quote Post
Kopa
сообщение Nov 15 2012, 17:49
Сообщение #128


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(SBE @ Nov 15 2012, 20:15) *
Увы, не сильно лучшего хватает, как уже упоминал, и в библиотеках расширений.

Да, может не хватать готовых и доступных существующих прототипов со знанием реализованных "наработок", как впрочем, и при создании "любого" программного изделия.sm.gif Но, в этом случае, программисты сами, зачастую, "запиливают" себе небходимый код и решения, по ходу.

Цитата(SBE @ Nov 15 2012, 20:15) *
Это не только извращения программистов, это отчасти свойство языка, ну провоцирует он к "мозголомству". И еще, когда глубоко погрузился в написание на форте, это уже не кажется ужасом, все понятно и прозрачно. До тех пор пока погрузился rolleyes.gif
Проблемы с хакингом это во многом следствие неочевидности и сложности для восприятия базового синтаксиса и сложных стековых манипуляций (общепризнанная слабость языка). И тоже самое будет с пониманием кода другим программистом.

Можно согласится, если нет привычки восприятия Форт программ. У меня проблем с восприятием и изменением чужого Форт кода особых не было. (всё в рабочем порядке), при этом те вещи которые не надо изменять, "легко" вычленяются из кода и не рассматриваются детально (Форт код действительно, в этом случае, минимально "защищает" себя от изучения.) Стековые маниуляции не так сложны и многочислены (зачастую типовое шаблонное использование) и "достаточно" наглядны в "коротких" интервалах кода. (но комментарии и правила оформления кода не помешают)

Цитата(SBE @ Nov 15 2012, 20:15) *
Плюс бесконечное расширение новыми понятиями и новой лексикой, на выходе может легко дать текст на "птичьем" языке, малопонятном для других разработчиков (проблема для любого программного языка, но для форта такое расширение в гораздо большей степени "и нужно, и можно").

В практической работе "мощные" механизмы по саморасширению Форт системы, зачастую, используются по минимуму необходимого. На выходе
если получился "птичий" язык, то он уже носит "гордое" свойство проблемно-ориентированности.

Цитата(SBE @ Nov 15 2012, 20:15) *
Правильно сказано. В том числе задуматься и про выбор инструментария. rolleyes.gif

Полностью поддерживаю и стараюсь использовать, по возможности и необходимости, разные дополнительные инструментальные и не только средства.sm.gif

Цитата(SBE @ Nov 15 2012, 20:15) *
P.S. Сам не пробовал, но вроде исходный текст форт восстанавливается по скомпилированному бинарному коду (для некоторых систем).

Наверное это можно отнести к Форт системам с "классической" реализацией использования шитого кода и с "небольшими" отклонениями
от существующих стандартов.
В русском SPF4 код после макрооптимизатора, уже наверное без "специальной" теории семантического анализа не понять,не имея исходного кода
программы.

Цитата(SBE @ Nov 15 2012, 20:15) *
Поэтому для командной работы (мы сейчас в основном только так и работаем, что правильно) я Forth поостерегусь применять, кроме случаев действительной нужды в нем.

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

Цитата(SyncLair @ Nov 15 2012, 20:23) *
И я также познавал азы протоассемблера, имея микро опыт в радиолюбительстве это и приводит некоторых людей к микроконтроллеру. Выходит Форт -- некоторое возвращение к истокам от современного Си ?

Может и не возвращение, но как повод "переосмыслить" некоторые вещи полезен и в сравненнии с Си.

Цитата(SBE @ Nov 15 2012, 19:15) *
Тем более для зачастую простых с программной точки зрения микроконтроллерных задач.

Задачи микроконтроллерные, изначально рассматриваются и определяются, как "простые", но дальше "аппетит" разработчика
может быть ничем не ограничен к добавлению всё новых и новых "фич".

Сообщение отредактировал Kopa - Nov 15 2012, 17:57
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 16 2012, 10:51
Сообщение #129


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Вопрос к знатокам форта.

Дано:
#define ADC10DTC0_ 0x0048 /* ADC10 Data Transfer Control 0 */

Требуется преобразовать в:
0x0048 constant ADC10DTC0_

То есть перетасовать порядок следования слов. Можно это как-нибудь реализовать?


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Nov 16 2012, 12:38
Сообщение #130


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Nov 16 2012, 14:51) *
Вопрос к знатокам форта.

Дано:
#define ADC10DTC0_ 0x0048 /* ADC10 Data Transfer Control 0 */

Требуется преобразовать в:
0x0048 constant ADC10DTC0_

То есть перетасовать порядок следования слов. Можно это как-нибудь реализовать?

Самое простое, без обработки входного потока и "извращений"
Код
: /* POSTPONE  \ ;
: #define , CREATE DOES> @ ;
0
#define ABC 123
#define CCC 456
,

P.S. Вспомнилось, попутно, обcуждение простых действий по преобразованию постфикса ассемблера в инфикс
Число ли?
В devel SPF4, вроде есть ещё варианты для #define

Сообщение отредактировал Kopa - Nov 16 2012, 12:48
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 16 2012, 12:53
Сообщение #131


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(Kopa @ Nov 16 2012, 16:38) *

А для чего ноль в начале и запятая в конце? (в смысле, обязательно ли)

Первая часть сработала sm.gif
Код
: /* POSTPONE  (; ok 
: */ POSTPONE  ); ?
: // POSTPONE  \; ok 

/* 12345 fjf j j */ ok

10 4 5 */ .s <0> ok


Правда, случайно переопределил */, ну да ладно..

А вот вторая - ни в какую. Рестартится, правда warm.

Код
0 ok 
#define abc 123 ok 
, ok 
abc4Ñ30G2553 v0.34 Apr 15 2012|110001110 Warm

В последней строке написал abc и нажал Enter


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Nov 16 2012, 13:08
Сообщение #132


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Nov 16 2012, 16:53) *
А для чего ноль в начале и запятая в конце? (в смысле, обязательно ли)

В этом варианте обязательно, 0 произвольное число чтобы не произошло исчерпания стека при выполнениии #define
(т.к. первым действием слово дописывает данные в поле кода "условно предыдущего слова")
а запятая, чтобы последняя константа тоже получила своё число.

Сообщение отредактировал Kopa - Nov 16 2012, 13:09
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 16 2012, 13:23
Сообщение #133


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Таки извратился sm.gif
Код
: #define :; ok
#define abc 123; ok
abc . 123 ok

Осталось придумать, кто будет ; дописывать в конце каждой строки

Чегт, ещё одна засада!
Код
#define ADC10CTL1_            0x01B2    /* ADC10 Control 1 */ 0X01B2?

Как бы объяснить, что 0x == hex


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
Kopa
сообщение Nov 16 2012, 13:30
Сообщение #134


Знающий
****

Группа: Участник
Сообщений: 598
Регистрация: 22-08-05
Пользователь №: 7 861



Цитата(MrYuran @ Nov 16 2012, 16:53) *
А вот вторая - ни в какую. Рестартится, правда warm.

Может, в этом варианте для 4e4h попробовать использовать последовательность [ LITERAL ] вместо запятой в дефине
т.к. устройство данного Форта может отличаться от общей модели с неразделяемой памятью.

P.S. Числа можно из входного потока например брать по такой схеме
Код
  : # NextWord 0 0 2SWAP >NUMBER 2DROP DROP  ,;  IMMEDIATE

Вместо NeхtWord вероятно есть слово WORD
и тогда : NextWord ( -- addr len ) WORD COUNT ;
и далее с возможными вариациями

Сообщение отредактировал Kopa - Nov 16 2012, 14:03
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Nov 16 2012, 13:37
Сообщение #135


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



ok, попробую sm.gif
Хотя, полюбому матчасть учить.
Слова есть такие:
Цитата
words ABC #DEFINE ABC ABC #DEFINE // /* S2? S2 GREEN RED P3 P2 P1 UNUSED MEM MEMTOP MEMBOT CGET CTOGGLE CCLR CSET MS 1MS BIN BELL .VER \ 2CONSTANT WIPE FACTORY
COLD WARM BOOT SAVE VALID? APPCRC ITHERE crc (crc ccrc .S DUMP U.R WORDS MARKER
FLALIGNED NOOP ENVIRONMENT? DEPTH MOVE WITHIN LEAVE +LOOP LOOP ENDLOOP DO L> >L
REPEAT WHILE AGAIN UNTIL BEGIN ELSE THEN IF POSTPONE ['] ; : IMMEDIATE REVEAL HIDE ] [ RECURSE DOES> (DOES>) CREATE <BUILDS HEADER ( [CHAR] CHAR ' ABORT" ?ABORT ABORT QUIT EVALUATE INTERPRET ?NUMBER >NUMBER ?SIGN DIGIT? LITERAL FIND IMMED?
NFA>CFA NFA>LFA WORD >COUNTED /STRING SOURCE IC, I, IALLOT IHERE C, , ALLOT HERE
HEX DECIMAL . U. SIGN #> #S # >DIGIT <# HOLD UD* UD/MOD IWORD ." S" IS" (S") (IS") ITYPE ICOUNT TYPE ACCEPT UMAX UMIN SPACES SPACE CR COUNT 2OVER 2SWAP 2DUP 2DROP 2! 2@ MIN MAX */ */MOD MOD / /MOD * FM/MOD SM/REM M* DABS ?DNEGATE DNEGATE ABS ?NEGATE S>D APPU0 INFOB COR #INIT UINIT BL TIBSIZE TIB S0 R0 L0 PAD CAPS APP NEWEST IDP LP HP LATEST 'SOURCE DP STATE BASE >IN U0 ,NONE !DEST ,DEST ,BRANCH ,
EXIT !COLON ,JMP ,CALL ,CF !CF COMPILE, >BODY CHARS CHAR+ CELLS CELL+ CELL ALIGNED ALIGN KEY? KEY EMIT N= S= SCAN SKIP I->D CMOVE> CMOVE FILL UM/MOD UM* UNLOOP J I (+loop) (loop) (do) ?branch branch U> U< > < <> = 0< 0= RSHIFT LSHIFT 2/ 2*
>< 1- 1+ NEGATE INVERT XOR OR AND - M+ +! + D->I IC@ I@ IC! I! FLERASE C! C@ ! @
TUCK RP! RP@ SP! SP@ R@ R> >R NIP ROT OVER SWAP DROP ?DUP DUP USER CONSTANT VARIABLE EXIT lit EXECUTE ok


Все-таки ABC прописалось, но выполняет что-то загадочное sm.gif


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post

11 страниц V  « < 7 8 9 10 11 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th July 2025 - 16:53
Рейтинг@Mail.ru


Страница сгенерированна за 0.01506 секунд с 7
ELECTRONIX ©2004-2016